我刚刚推出了一个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中的一些工具栏/插件或设置让我在这里绊倒。
你们有什么想法?
答案 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)
动态创建元素 如果已动态创建canvas元素,则不会将getContext方法添加到元素中。要使其正常工作,您需要在G_vmlCanvasManager对象上调用initElement。
var el = document.createElement('canvas');
G_vmlCanvasManager.initElement(el);
var ctx = el.getContext('2d');