gpt4 book ai didi

javascript - 如何在 JavaScript 中获取网站上所有链接的数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:52:34 25 4
gpt4 key购买 nike

我需要一个列表/集合/数组/网站上所有链接的任何内容。目前我正在使用 window.content.document.links,但这并不适用于所有网站。 (那些网站生成一个空数组。)(示例:dctp.ws)我猜这是因为这些网站包含框架。有什么方法可以访问框架内的链接吗?

此外,这是一个 FireGestures 脚本,因此它将“在浏览器内”运行。我不想下载网站或类似的东西,因为浏览器已经下载并解析了它。

最佳答案

您可以使用 getElementsByTagName 从文档中获取所有 a 元素的 NodeList ,像这样:

var list = document.getElementsByTagName("a");

所以您要对主文档以及文档中的所有框架执行此操作。要访问框架,您可以使用 window.frames pseudo-array .每个条目都是该框架的 window 对象,因此:

var listInFrame = window.frames[n].document.getElementsByTagName("a");

因此创建一个空白数组,添加文档本身的元素,然后遍历窗口添加文档中的链接。

我不熟悉 FireGestures,所以我不知道 Same Origin Policy适用于它运行的脚本。


更新:从您下面的评论来看,FireGesture 脚本似乎 受 SOP 的约束。因此,您将无法在 FireGestures 脚本中直接访问来自不同来源的文档内容。

您可以结合使用 FireGestures 和 GreaseMonkey 来做一些事情。 GreaseMonkey 有一个 API 调用,GM_xmlhttpRequest ,这会绕过 SOP — 但请注意,这将是另一个 GET,您不会读取已经在内存中的页面副本,而您说您想要这样做。不幸的是,您完全有可能无法使用 FireGestures 做您想做的事情。您可能必须完全编写自己的附加组件(并让它请求相关权限)。

关于javascript - 如何在 JavaScript 中获取网站上所有链接的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9374961/

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