Я пытаюсь загрузить полифилл 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 динамически создает элемент холста и добавляет его в 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?