Я пытаюсь загрузить polyfill excanvas в js-файл для своей страницы. Этот файл скрипта вставляется после тега body на моей странице.
Странно, если я использую
<script type='text/javascript' src='/Scripts/polyfills/excanvas.compiled.js'></script>
в моем теге head все отлично работает, но я не обязательно хочу загружать этот скрипт для браузеров, совместимых с HTML5, если мне не нужно.
Поэтому, естественно, я попытался использовать Modernizr для выборочной загрузки. Это мой отлично исполняемый, но не функционирующий код JavaScript:
<!-- language: lang-js -->
$(function () {
Modernizr.load({
test: Modernizr.canvas,
nope: '/Scripts/polyfills/excanvas.compiled.js',
complete: function () {
setImage();
}
});
});
Кажется, это работает нормально. Сценарий excanvas загружается успешно.
Функция setImage создает элемент canvas динамически и добавляет его в div на странице.
Это хорошо работает в IE9, но не может отрендериться в IE8.
<!-- language: lang-js -->
function setImage() {
var canvasHello = document.createElement('canvas');
canvasHello.id = 'canvasHello';
$('#divContent').append(canvasHello);
if (!Modernizr.canvas) {
G_vmlCanvasManager.initElement(canvasHello);
}
var canvasContext = canvasHello.getContext('2d');
canvasContext.width = 800;
canvasContext.height = 600;
canvasContext.fillStyle = "#000000";
canvasContext.fillRect(0, 0, 600, 800);
var img = document.createElement('img');
img.src = '/Content/images/hello.png';
img.onload = function () {
canvasContext.drawImage(img, 100, 25, 100, 100);
}
}
Я что-то пропустил или скрипт excanvas не работает вне тега head?