背景情報
現在IE9にNodeFilter
は、メソッドのプロパティがcreateTreeWalker
コールバック関数を含むオブジェクトではなくコールバック関数であると見なすバグが存在します。
このような呼び出しで:
document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT, filter, false);
filter
acceptNode
WebkitおよびGeckoでは、「メソッドを含むオブジェクト」として定義されています。ただし、IE9では、acceptNodeについてはまったく言及されていません。オブジェクトをラップせずに、「コールバックメソッド」を想定しています。
実際の質問
では、明示的なブラウザ検出を行わずにこの問題を回避するための最良の方法は何ですか?メソッドである必要filter
がある場合もあれば、メソッドを含むオブジェクトである必要がある場合もあります。これを達成するためのクリーンな方法はありますか?これらのブラウザはすべてDOM2.0をサポートしていると主張しているため、テストできません...
ドキュメント-バグの証明
それぞれのドキュメントの比較は次のとおりです。