背景信息
IE9 中当前存在一个错误,它认为方法的NodeFilter
属性createTreeWalker
是回调函数,而不是包含回调函数的对象。
在这样的电话中:
document.createTreeWalker(document.body, NodeFilter.SHOW_ELEMENT, filter, false);
filter
在 Webkit 和 Gecko中被定义为“包含方法的对象acceptNode
”;然而,在 IE9 中,根本没有提到 acceptNode ——它需要一个“回调方法”,而没有该对象包装。
实际问题
那么,在不进行显式浏览器检测的情况下解决此问题的最佳方法是什么?在某些情况下,我需要filter
成为一种方法,而在其他情况下,我需要它成为包含该方法的对象。有没有一种干净的方法可以做到这一点?所有这些浏览器都声称支持 DOM 2.0,所以我无法对此进行测试......
文档 - 错误证明
以下是每个文档的比较: