簡體   English   中英

如何在JavaScript中獲取網站上所有鏈接的數組

[英]How to get an array of all links on a website in JavaScript

我需要一個列表/集合/數組/網站上的所有鏈接。 目前我正在使用window.content.document.links,但這並不適用於所有網站。 (那些網站產生一個空數組。)(例如:dctp.ws)我猜這是因為那些網站包含框架。 有沒有辦法訪問框架內的鏈接?

此外,這是一個FireGestures腳本,因此它將“在瀏覽器內”運行。 我不想下載網站或類似的東西,因為瀏覽器已經下載並解析了它。

你可以得到一個NodeList所有的a使用的文檔元素getElementsByTagName ,就像這樣:

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

因此,您可以為主文檔以及文檔中的所有幀執行此操作。 要訪問這些幀,可以使用window.frames偽數組 每個條目都是該框架的window對象,因此:

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

因此,創建一個空白數組,從文檔本身添加元素,然后循環通過窗口添加其文檔中的鏈接。

我不熟悉FireGestures,因此我不知道同源策略是否適用於它運行的腳本。


更新 :從您的評論如下,這聽起來像FireGesture腳本受到了SOP。 因此,您將無法在FireGestures腳本中直接訪問來自不同來源的文檔內容。

您可以將FireGestures和GreaseMonkey結合起來。 GreaseMonkey有一個API調用, GM_xmlhttpRequest ,繞過SOP - 但請注意它將是另一個GET ,你不會讀取已經在內存中的頁面的副本,你說你想做。 不幸的是,完全有可能你可能無法用FireGestures做你想做的事。 您可能必須完全編寫自己的加載項(並讓它請求相關權限)。

您可以使用document.getElementsByTagName('a')

這也正是它聽起來像-你得到一個節點列表所有的a頁面上的元素。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM