我需要一个列表/集合/数组/网站上的所有链接。 目前我正在使用window.content.document.links,但这并不适用于所有网站。 (那些网站产生一个空数组。)(例如:dctp.ws)我猜这是因为那些网站包含框架。有没有办法访问框架内的链接?
此外,这是一个FireGestures脚本,因此它将“在浏览器内”运行。我不想下载网站或类似的东西,因为浏览器已经下载并解析了它。
答案 0 :(得分:5)
您可以使用getElementsByTagName
从文档中获取NodeList
个a
元素,如下所示:
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做你想做的事。您可能必须完全编写自己的加载项(并请求相关权限)。
答案 1 :(得分:1)
您可以使用document.getElementsByTagName('a')
。
这听起来完全正确 - 您获得了页面上所有a
元素的NodeList。