如何防止IE10崩溃时,它试图使用DomObject.过滤器属性
How to prevent IE10 from crashing when it tries to use the DomObject.filters property?
我有一些旧的JavaScript代码,我不能更改在IE10上崩溃(我可以更改其他脚本文件)。
下面是崩溃代码:
if(isInternetExplorer && this.domElement.filters[0])
this.domElement.filters[0].play()
这段代码不会在ie8/9中崩溃,因为DOM元素有非标准属性"filters"。
下面是filters属性的文档。
我能想到的唯一解决方案是改变HtmlElement的原型,但我不觉得这实际上是可能的,或者是一件好事。
所以我怎么能防止IE10崩溃时,它试图使用DomObject。过滤器财产吗?
[编辑]我刚刚找到了一个"解决方案"。这也是@JAM的解决方案:
if (!HTMLDivElement.filters) {
HTMLDivElement.prototype.filters = [];
}
但是我还是觉得修改浏览器原生对象的原型很糟糕。
正如你所说,重写对象的原型是一种方法;所以如果没有其他的你可以试试这个:
Object.prototype.filters = Object.prototype.filters || []
或者更好(就像你自己建议的那样):
HTMLDivElement.prototype.filters = HTMLDivElement.prototype.filters || []
如果对象不存在,则设置该对象的filters属性。
嗯,用特征检测代替浏览器检测?没有isInternetExplorer
,只有doesSupportFilters
:
var el = this.domElement;
if (el.filters && el.filters.length && typeof el.filters[0].play == "function")
el.filters[0].play();
相关文章:
- RegEx删除空属性?例如,如果(class=“”||class=“”)移除;否则就下课
- 全局变量和全局对象的属性之间有什么区别吗
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 如何在Bootstrap Modal中为动态点击生成的变量设置jade属性
- 序列化数据属性中对象的最可靠方法
- 分析高度属性时出现意外值{{specs.height}}.index.html
- TypeError:无法读取属性'推'未定义的JavaScript
- 同样,同样的错误'ahorcado.js:26未捕获类型错误:无法读取属性'beginPath'
- AngularJS-使用'true'属性
- 可以't使用JavaScript获取width属性
- 未捕获的TypeError无法读取未定义的属性socialsharing
- 如何使用javascript获取嵌套对象中所有子对象的单个属性
- JavaScript Pub/Sub属性访问问题
- 从JavaScript访问struts操作中的属性
- 是否可以从父类访问子类的属性
- 如何更改reactjs中外部/独立组件的状态或属性
- 如何在选项卡上定义属性'的主窗口对象
- 锚点元素的href属性自动更改
- jQuery最近父级的数据属性选择器
- 如何防止IE10崩溃时,它试图使用DomObject.过滤器属性