我有一些旧的 JavaScript 代码,我不能更改在 IE10 上崩溃(我可以更改其他脚本文件)。
这是崩溃的代码:
if(isInternetExplorer && this.domElement.filters[0])
this.domElement.filters[0].play()
该代码不会在 ie8/9 中崩溃,因为 DOM 元素具有非标准属性“过滤器”。
这是 filters property 的文档.
我能想到的唯一解决方案是更改 HtmlElement 的原型(prototype),但我觉得这实际上不可能,也不是一件好事。
那么如何防止 IE10 在尝试使用 DomObject.filters 属性时崩溃?
[编辑] 我刚刚找到了一个“解决方案”。这也是@JAM's solution. :
if (!HTMLDivElement.filters) {
HTMLDivElement.prototype.filters = [];
}
但我仍然对修改浏览器原生对象的原型(prototype)感到遗憾。
最佳答案
正如您所说,重写对象的原型(prototype)是一种方法; 所以如果没有其他选择你可以试试这个:
Object.prototype.filters = Object.prototype.filters || []
或者更好(正如您自己建议的那样):
HTMLDivElement.prototype.filters = HTMLDivElement.prototype.filters || []
这将设置对象的过滤器属性,如果它不存在的话。
关于javascript - 如何防止 IE10 在尝试使用 DomObject.filters 属性时崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16552241/