![](/img/trans.png)
[英]How to recursively get all the links present in a website using 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.