Javascript 为什么我的IE9不支持画布?

Javascript 为什么我的IE9不支持画布?,javascript,canvas,internet-explorer-9,Javascript,Canvas,Internet Explorer 9,声称IE9支持画布 但是,当我尝试在IE9上使用canvas时,它不起作用: 对象不支持属性或方法“getContext” 我使用的是IE9.0.8112.16421: 代码如下: <html> <head> </head> <body style="background:black;margin:0;padding:0;"> <canvas id="canvas" style="background:white;width:100%;h

声称IE9支持画布

但是,当我尝试在IE9上使用canvas时,它不起作用:

对象不支持属性或方法“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,left,top,20,20);
  };
  setInterval(f,20);
};
img.src="http://a.wearehugh.com/dih5/aoc-h.png";
</script>
</body>
</html>

新手
var img=新图像();
img.onload=函数(){
var c=document.getElementById('canvas');
var ctx=c.getContext('2d');
左上角;
左=上=0;
ctx.drawImage(图像,左,上,20,20);
var f=函数(){
左+=1;
top+=1;
c、 宽度=c.宽度;
ctx.drawImage(图像,左,上,20,20);
};
设定间隔(f,20);
};
img.src=”http://a.wearehugh.com/dih5/aoc-h.png";
两件事:

标记应具有相应的结束标记
。虽然有些浏览器只需一个开始标记就可以让你通过,但其他浏览器(比如Firefox,或许还有IE)则不行


此外,IE9要求您声明HTML5 doctype以使用canvas标记。您可以通过将
放在代码顶部来完成此操作。

必须是页面上的第一件事。我有一个脚本之前的标签,它不断给我相同的错误。这只发生在IE9中,Chrome和Firefox甚至可以在doctype标记之前使用脚本。

如果IE9在兼容模式下运行,画布标记将无法识别,即使您使用的是HTML5 doctype标记。至少这是我的经历


检查IE9是否在兼容模式下运行,如果站点位于intranet上,可能会出现这种情况。

运行IE9.0.8112.16421。Canvas元素最初不会工作,但若我点击F12调出devtools,然后刷新,它就会开始工作。不打开devtools窗口的正常刷新将不起作用。可能是JS init问题,因为在我将画布绘图代码移到自己的.JS文件之前,画布正在工作。在Chrome/Firefox/Safari中运行良好。

在兼容性视图中使用IE10时,请检查IE兼容性版本。输入F12(open developer Tools)并检查您需要测试和浏览器的适当IE(例如IE9)版本 将在这个版本下完成作业。

伙计们

在谷歌代码上查看浏览器画布:

希望这有帮助


Tze

如何获取canvas元素?如果你看到了鱼,那么画布工作,你只是做错了什么。@tylermwashburn我确实看到了鱼很奇怪,唯一不同的是我看到的是画布标签的关闭,试试黑暗中的总镜头。。在JSFIDLE中,您的代码对我来说运行良好@洛克塔,我把它关了。不,它仍然不起作用。你在使用ie9.0.8112.16421吗?很好,是的,我不想把它作为答案发布,因为我无法从技术上测试它来验证+1。@杰夫,我已经关闭了它,但它仍然不起作用。你用的是ie9.0.8112.16421吗?嗯,很奇怪,试着把它放在最上面,好眼力。永远不会注意到。:)我也有同样的问题。你还需要检查IE9是否处于兼容模式(地址栏中的断页图标),如果你在头标签之后添加了额外的内容,IE将始终使用其呈现模式的最高版本。如果它有chrome插件,它就会使用它。摘自样板HTML5.Wow。是的,这为我解决了问题。我试图在公司的内部网站上显示一个HTML5页面。通过在Tools\compatibility View设置中关闭兼容性模式,最终将显示HTML 5页面。另一个来自微软的荒谬离奇的设置!还有一个问题:我实际上希望在我的C#app的WebView窗口中显示此页面。在那里,它继续显示“对象不支持属性或方法'getContext'”消息。我怎样才能在WebView中打开这个兼容性破解?它是100%兼容的吗?不能确定。。。我得到了IE11,它似乎在IE9中工作。如果我最终安装了本机IE9,我会让您知道它的运行情况。
应该始终是您页面上的第一件事,无论使用哪种浏览器。