我正在尝试在页面特定的 js 文件中为我的页面加载 excanvas polyfill。此脚本文件插入到我页面上的正文标记之后。
奇怪的是,如果我使用
<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 标签之外不起作用?