Ответы:
Я также видел, что часто предпочитают использовать .get (0) для ссылки на цель jquery как элемент HTML:
var myCanvasElem = $("#canvas").get(0);
Возможно, чтобы помочь избежать любых потенциальных ссылок на нулевые объекты, так как jquery возвращает null как объект, но работа с элементом из .get (0) не может завершиться неудачей так тихо ... Вы можете легко проверить, был ли холст найден первым до .get (0). ) лайк
if( $("#canvas").length ) ctx = $("#canvas").get(0).getContext('2d');
else console.log('Error: Canvas not found with selector #canvas');
try{
ctx = $('#canvas').get(0).getContext('2d');
}catch(e){
console.log('We have encountered an error: ' + e);
}
или...
if( typeof $('#canvas') === 'undefined'){
var canvas = '<canvas id="canvas"><\/canvas>';
$('body').append(canvas);
}
setTimeout( function(){ ctx = $('#canvas').get(0).getContext('2d'); }, 500);
Использование setTimeout - это простой способ убедиться, что вы не пытаетесь вызвать элемент canvas до его полного создания и регистрации в DOM.
Сценарий работает до того, как найдет «холст»
$(document).ready(function() {
ctx = $("#canvas");
});