javascript - 如何防止 IE10 在尝试使用 DomObject.filters 属性时崩溃?

标签 javascript internet-explorer internet-explorer-10

我有一些旧的 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/

相关文章:

javascript - 默认情况下导航栏下拉项无法隐藏

javascript - 克隆多个字段值无法正常工作

javascript - Angular ie8 "Object doesn' t支持属性或方法 'hasOwnProperty'“解决方法

html - 在不影响移动 IE10 的情况下隐藏 Firefox 中响应式设计 View 的滚动条?

jquery - 使用jquery ajax将本地url连接到绝对url

javascript - Angular 手动引导在 IE 10 上不起作用

javascript - jQuery 计算 Text_Change 的值

javascript - 按技能排序对象

html - 用户单击时如何避免复选框周围出现虚线?

IE7 中的 Javascript InnerHTML 与 INPUT 标签混淆