HTMLCanvas'getContext'不是受支持的属性或方法
HTMLCanvas 'getContext' is not a supported property or method
我刚刚启动了一个HTML5游戏应用程序,我不断收到一些用户的'对象不支持属性或方法'getContext'错误日志。
我的设置只允许使用Chrome(16<)、Firefox(9<IE(<9)用户在他们的脸上安装了chromeflame。
只有我的一些IE9用户抛出了这个异常。我在几台带有IE9的windows机器上玩过这个游戏,包括vista和windows7。
搜索我的源代码,对于函数调用getContext,我得到了相同的模式。我使用document.createElement创建了一个画布元素,然后调用下一行的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中的一些工具栏/插件或设置让我在这里感到困惑。
你们觉得怎么样?
在插入<meta http-equiv="X-UA-Compatible" content="chrome=1, IE=edge">
之后,我们已经大大减少了错误数量,我们仍然有一些,但这可能是用户使用chromeframe安装检查无法捕捉到的奇怪浏览器登录。
chrome=1表示"使用铬框架"(如果存在)。
IE=edge表示"使用尽可能高的IE版本"。
所以我现在就这么做。
<!--[if lt IE 9]><script src="../excanvas/excanvas.original.js"></script><![endif]-->
您是否考虑过用户不知道自己使用的IE版本并报告错误的可能性?
来自指令
动态创建的元素如果您已经动态地创建了画布元素,则不会将getContext方法添加到元素中。要使其工作,您需要对G_vmlCanvasManager对象调用initElement。
var el = document.createElement('canvas');
G_vmlCanvasManager.initElement(el);
var ctx = el.getContext('2d');
相关文章:
- 为什么NgModelController属性/方法以$开头
- 如何使用设置属性方法在jquery中更改css
- 全局向对象添加属性/方法
- AngularJS $http.delete 在“类型错误:无法分配给只读属性'方法'”中中断
- 添加属性/方法的明确最佳方法
- 扩展类时继承而不是覆盖属性/方法
- Javascript子类对象不保留基类的属性/方法
- 将模型属性方法发送到客户端 Sails Angular
- 错误:参数 4 的值无效.属性“方法”:意外属性
- 类型错误:无法读取 nodejs 应用程序中未定义的属性“方法”
- 属性/方法无法初始化indexedDB
- 在javascript中定义属性方法的适当模式;类”;
- 创建两个函数来计算对象属性/方法
- 当getElementById返回null时,取消对属性/方法的访问
- 自定义属性方法如何在Sails js中工作
- 通过js中的数组属性方法进行迭代
- 为什么要添加属性/方法到视图模型AFTER定义
- 在Angular中,在闭包中引用服务属性/方法最合适的方式是什么?
- 列出一个对象的所有属性/方法
- Javascript:添加属性方法问题