问题描述
|
diveIntoHTML5 Canvas声称IE9支持画布。
但是,当我尝试在IE9上做画布时,它不起作用:
对象不支持属性或方法“ getContext”
我正在使用IE9.0.8112.16421:
这是代码:
<html>
<head>
</head>
<body style=\"background:black;margin:0;padding:0;\">
<canvas id=\"canvas\" style=\"background:white;width:100%;height:100%;\">noob</canvas>
<script>
var img=new Image();
img.onload=function(){
var c=document.getElementById(\'canvas\');
var ctx = c.getContext(\'2d\');
var left,top;
left=top=0;
ctx.drawImage(img,left,top,20,20);
var f=function(){
left+=1;
top+=1;
c.width=c.width;
ctx.drawImage(img,20);
};
setInterval(f,20);
};
img.src=\"http://a.wearehugh.com/dih5/aoc-h.png\";
</script>
</body>
</html>
解决方法
两件事情:
<canvas>
标签应具有相应的结束标签</canvas>
。尽管有些浏览器只允许您使用一个开始标签,但其他浏览器(例如Firefox和IE)则不会。
另外,IE9要求您声明HTML5文档类型以使用canvas标记。您可以通过在代码的顶部放置ѭ3来实现此目的。
, 如果IE9在兼容模式下运行,则即使您使用的是HTML5 DOCTYPE标签,canvas标签也不会被识别。至少那是我的经验。
检查IE9是否以兼容模式运行,如果站点位于Intranet上,则可能是这种情况。
, <!DOCTYPE html>
必须是页面上的第一件事。标签前有一个脚本,它一直给我同样的错误。这仅在IE9,Chrome和Firefox使用doctype标记之前的脚本的情况下才会发生。
, 运行IE 9.0.8112.16421。画布元素最初不会起作用,但是如果我按F12键调出devtools,然后刷新,它将开始起作用。没有打开devtools窗口的常规刷新将不起作用。可能是一个JS init问题,因为在我将画布绘制代码移入其自己的.js文件之前,画布已经在工作。在Chrome / Firefox / Safari中工作正常。
, 在兼容性视图中使用IE10时,请检查IE兼容性版本。输入F12(打开开发人员工具)并检查您需要测试和浏览器的适当IE(例如IE9)版本
将在此版本下正常工作。
, 伙计们!
在Google Code上查看Explorer Canvas:
https://code.google.com/p/explorercanvas/
希望这可以帮助!
子