Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/468.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何防止IE10在尝试使用DomObject.filters属性时崩溃?_Javascript_Internet Explorer_Internet Explorer 10 - Fatal编程技术网

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

Javascript 如何防止IE10在尝试使用DomObject.filters属性时崩溃?,javascript,internet-explorer,internet-explorer-10,Javascript,Internet Explorer,Internet Explorer 10,我有一些旧的JavaScript代码,在IE10上崩溃时我无法更改(我可以更改其他脚本文件) 以下是崩溃代码: if(isInternetExplorer && this.domElement.filters[0]) this.domElement.filters[0].play() 该代码在ie8/9中不会崩溃,因为DOM元素具有非标准属性“filters” 以下是要提交的文档 我能想到的唯一解决方案是更改HtmleElement的原型,但我觉得这实际上是不可能的,也不是

我有一些旧的JavaScript代码,在IE10上崩溃时我无法更改(我可以更改其他脚本文件)

以下是崩溃代码:

if(isInternetExplorer && this.domElement.filters[0])
  this.domElement.filters[0].play()
该代码在ie8/9中不会崩溃,因为DOM元素具有非标准属性“filters”

以下是要提交的文档

我能想到的唯一解决方案是更改HtmleElement的原型,但我觉得这实际上是不可能的,也不是一件好事

那么,当IE10尝试使用DomObject.filters属性时,如何防止它崩溃呢

[编辑] 我刚刚找到了一个“解决方案”。这也是:


但是我仍然对修改浏览器本机对象的原型感到遗憾。

正如您所说,覆盖对象的原型是一种方法因此,如果没有其他选择您可以尝试以下方法:

Object.prototype.filters=Object.prototype.filters | |[]

或者更好(正如你建议的那样):

htmldevelment.prototype.filters=htmldevelment.prototype.filters | |[]


如果对象不存在,这将设置对象的filters属性。

嗯,是否使用特征检测而不是浏览器检测?请不要使用Internet Explorer
,但
不支持筛选器

var el = this.domElement;
if (el.filters && el.filters.length && typeof el.filters[0].play == "function")
    el.filters[0].play();

什么是Internet Explorer
,你能覆盖它吗?不,我不能覆盖它。当你说“崩溃”——它真的会崩溃浏览器吗?有复印页吗?脚本崩溃了。我将制作一个JSFIDLE。就是这么简单:。进去看看。它将在IE10上崩溃,但不是我编辑了我的问题,它没有必要有一个默认的对象与播放功能。查看我的编辑。@Jean PhilippeLeclerc让我知道这是否解决了您的问题:)它实际上解决了问题。我仍然会等待更多的答案,以防有其他类似的神奇解决方案。@Jean-PhilippeLeclerc Great:)-1作为修改
对象。这样的原型
打破了
中的每一个
-枚举!引用问题:“我有一些旧的JavaScript代码,我无法更改…”
var el = this.domElement;
if (el.filters && el.filters.length && typeof el.filters[0].play == "function")
    el.filters[0].play();