gpt4 book ai didi

javascript - document.evaluate 不适用于 RSS 提要页面

转载 作者:行者123 更新时间:2023-11-28 00:27:25 25 4
gpt4 key购买 nike

我在 Firefox 中使用标准的“document.evaluate”方法,到目前为止该方法一直适用于其他所有内容。但在 RSS 提要页面上,如下所示:

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

即使是一个简单的查询对我来说也不起作用。当我在 Firefox 中打开此页面时,从开发人员工具 (Shift+F4) 打开便签本并尝试

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

它给出的结果是 0,而我知道有一个 id 为“feedContent”的 div 元素。我可以通过 HTML 检查器确认这一点,也可以通过在同一个便签本窗口中尝试在上述代码行下方进行确认:

alert(document.getElementById('feedContent'));

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

谢谢!

最佳答案

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

相反,浏览器将提要封装在 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);

便签本将返回1

关于javascript - document.evaluate 不适用于 RSS 提要页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29351485/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com