这是我的head
部分中的代码:
<script src="jquery-1.10.1.min.js"></script>
<script src="metro.js"></script>
<script src="draw.js"></script>
<script>
$(document).ready(function() {
var im = $('<img />')
.attr({id: 'metro', src:'metro.png'})
.appendTo($('body'))
.hide()
.on('load', function() {
okIm = true;
drawIfOk();
});
var bg = $('<img />')
.attr({id: 'back', src:'back.png'})
.appendTo($('body'))
.hide()
.on('load', function() {
okBg = true;
drawIfOk();
});
});
</script>
此代码应动态下载 2 个图像,并在drawIfOk();
函数中测试是否下载了两个图像。如果是这样,那么我尝试根据图像的宽度和高度创建画布,如下所示:
function drawIfOk() {
if (!okIm) {
return;
}
if (!okBg) {
return;
}
initTest();
}
简单吧?
现在initTest();
函数很简单:
function initTest() {
gImgMetro = $('#metro')[0];
var bg = $('#back')[0];
/* Création du canvas */
gImgCanvas = $('<canvas />').attr({
width: bg.width,
height: bg.height
})[0];
gImgCtx = gImgCanvas.getContext('2d');
if(!gImgCtx) {
displayError("Impossible de récupérer le context du canvas");
return;
}
}
然后 IE 给我一个错误,因为bg.width
andbg.height
是 0 而它在 Safari、Chrome、Firefox 和 Maxthon 上工作![尽量不要抱怨 IE]
如何规避这一点?