HTMLCanvas'getContext'不是受支持的属性或方法

时间:2012-02-16 07:26:41

标签: javascript html exception canvas internet-explorer-9

我刚刚推出了一个HTML5游戏应用程序,并且我一直收到来自某些用户的'对象不支持属性或方法'getContext '错误日志。

我的设置仅允许使用Chrome(16 <),Firefox(9 <)或IE(9 <)的用户玩游戏。 IE(&lt; 9)用户可以在他们的脸上安装chromeframe。

它只是我的一些IE9用户抛出此异常。 我在IE9的几台Windows机器上玩游戏,包括vista和windows 7。

搜索我的源代码,对于函数调用getContext,我得到了相同的模式。 我使用document.createElement创建一个canvas元素,然后调用getContext('2d'),下一行。

var buffer = /** @type {!HTMLCanvasElement} */ (document.createElement('canvas')),
    ctx = /** @type {!CanvasRenderingContext2D} */ (buffer.getContext('2d')),
    draw = function(ctx) {
       /**
        * Alot of drawing calls.
        */
    };
draw(ctx);

鉴于我的IE9用户很多都应该运行游戏,我认为这不是我的代码的问题,而是IE9中的一些工具栏/插件或设置让我在这里绊倒。

你们有什么想法?

4 个答案:

答案 0 :(得分:10)

插入<meta http-equiv="X-UA-Compatible" content="chrome=1, IE=edge">之后,我们已经减少了很多错误数量,我们仍然有一些,但可能是用户使用奇怪的浏览器登录,而chromeframe安装检查无法捕获。

chrome = 1表示'使用chrome frame',如果它在那里。

IE = edge表示'使用最高版本的IE'。

所以我现在就去那。

答案 1 :(得分:3)

据我所知,IE9完全支持canvas标签。但用户应确保他不处于兼容模式。但为了避免这个问题,我建议你使用excanvas。如果您不知道如何下载excanvas并添加以下链接

<!--[if lt IE 9]><script src="../excanvas/excanvas.original.js"></script><![endif]-->

答案 2 :(得分:0)

您是否考虑过用户不知道他们使用的是哪个版本的IE并且报告错误的可能性?

答案 3 :(得分:0)

来自Instructions

动态创建元素 如果已动态创建canvas元素,则不会将getContext方法添加到元素中。要使其正常工作,您需要在G_vmlCanvasManager对象上调用initElement。

var el = document.createElement('canvas');
G_vmlCanvasManager.initElement(el);
var ctx = el.getContext('2d');