document.evalute 无法处理 RSS 提要页面

document.evalute not working on RSS feeds page

我在 Firefox 中使用标准的 'document.evaluate' 方法,该方法到目前为止一直适用于其他所有方法。但是在这样的 RSS 提要页面上:

http://msutoday.msu.edu/rss/all/

即使是简单的查询也不适合我。当我在 Firefox 中打开此页面时,从开发人员工具 (Shift+F4) 打开 Scratchpad 并尝试

var nodesSnapshot = document.evaluate("//div[@id='feedContent']", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );
alert(nodesSnapshot.snapshotLength);

结果为 0,而我知道有一个 div 元素的 ID 'feedContent'。我可以从 HTML Inspector 确认这一点,也可以在同一个 Scratchpad window:

的上述代码行下方尝试确认
alert(document.getElementById('feedContent'));

为什么 document.evaluate 会在这里失败以及如何让它工作?

谢谢!

我还没有完全理解它,但显然,您的 JS 不是 根据该页面的源文档进行评估,这将是一个 RSS 提要。

相反,浏览器将提要封装在 XHTML 包装器(提要处理程序)中,其中最外层的元素带有 默认名称空间。因此,此 div 元素位于名称空间中。如果您将表达式更改为更通用的内容,而不是直接涉及元素名称:

var nodesSnapshot = document.evaluate("//*[@id='feedContent']", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );

var nodesSnapshot = document.evaluate("//*[local-name() = 'div' and @id='feedContent']", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null );

alert(nodesSnapshot.snapshotLength);

Scratchpad 将 return 1.