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

Ara*_*Fey 3 javascript javascript-objects

我需要一个列表/集合/数组/网站上的所有链接.目前我正在使用window.content.document.links,但这并不适用于所有网站.(那些网站产生一个空数组.)(例如:dctp.ws)我猜这是因为那些网站包含框架.有没有办法访问框架内的链接?

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

T.J*_*der 5

您可以使用以下方式从文档中获取NodeList所有a元素getElementsByTagName:

var list = document.getElementsByTagName("a");
Run Code Online (Sandbox Code Playgroud)

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

var listInFrame = window.frames[n].document.getElementsByTagName("a");
Run Code Online (Sandbox Code Playgroud)

因此,创建一个空白数组,从文档本身添加元素,然后循环通过窗口添加其文档中的链接.

我不熟悉FireGestures,因此我不知道同源策略是否适用于它运行的脚本.


更新:从您的评论如下,这听起来像FireGesture脚本受SOP.因此,您将无法在FireGestures脚本中直接访问来自不同来源的文档内容.

您可以将FireGestures和GreaseMonkey结合起来.GreaseMonkey有一个API调用,GM_xmlhttpRequest绕过SOP - 但请注意它将是另一个GET,你不会读取已经在内存中的页面的副本,你说你想做.不幸的是,完全有可能你可能无法用FireGestures做你想做的事.您可能必须完全编写自己的加载项(并让它请求相关权限).