1

IE10 でクラッシュして変更できない古い JavaScript コードがいくつかあります(他のスクリプト ファイルは変更できます)。

クラッシュするコードは次のとおりです。

if(isInternetExplorer && this.domElement.filters[0])
  this.domElement.filters[0].play()

DOM 要素に非標準のプロパティ「filters」があるため、このコードは ie8/9 でクラッシュしません。

これは、 filters プロパティのドキュメントです。

私が考えることができる唯一の解決策は、HtmlElement のプロトタイプを変更することですが、それが実際に可能であるとは思えません。

DomObject.filters プロパティを使用しようとしたときに IE10 がクラッシュしないようにするにはどうすればよいでしょうか?

[編集] 「解決策」を見つけました。これも@JAMのソリューションです。:

if (!HTMLDivElement.filters) {
    HTMLDivElement.prototype.filters = [];
}

しかし、ブラウザーのネイティブ オブジェクトのプロトタイプを変更することについては、まだ気の毒に思います。

4

2 に答える 2

1

うーん、ブラウザ検出の代わりに機能検出を使用しますか? いいえisInternetExplorer、しかしdoesSupportFilters:

var el = this.domElement;
if (el.filters && el.filters.length && typeof el.filters[0].play == "function")
    el.filters[0].play();
于 2013-05-14T22:11:32.370 に答える