2012-01-13 52 views
1

在沒有加載任何相關圖片/腳本/等的情況下,獲取可用AJAX的頁面的可用DOM的最佳方式是什麼?如何在不加載圖像/腳本的情況下在後臺加載和分析頁面?

背景故事: 我想加載背景頁面,然後進行排序就可以了數據挖掘的(這是一個瀏覽器擴展,所以我無法控制自己的網頁)。我不想花時間在後臺頁面上加載圖像和運行腳本,因爲它只是我需要的頁面內容。通過AJAX

+2

如果您通過AJAX請求URL,除非將其添加到DOM,否則不應加載資源。 – Jonathan 2012-01-13 09:44:52

+0

是的,但如果我不添加到DOM,我將如何分析頁面內容? – 2012-01-13 09:50:16

+1

這取決於你究竟如何分析頁面,但是,沒有理由需要將它添加到DOM。例如,如果您使用的是jQuery,那麼如果請求位於DOM中,則可以使用所有相同的選擇器。你能夠使用jQuery嗎?你正在爲此構建哪個瀏覽器?你能告訴我更多關於你想分析的內容嗎? – Jonathan 2012-01-13 09:57:12

回答

0
  1. 負載數據
  2. 條所有含有srchref屬性,或簡單地與data:null改變這些屬性的值的標籤。如果數據還包含內嵌樣式應刪除包含對外部資源的引用(例如背景和邊框圖像,.htc組件,XUL綁定,.ICO光標)
  3. 附加過濾數據的所有語句到DOM和分析

第2步可以通過javascript中的正則表達式來實現。例如

/* here we are in the ajax "success" callback */ 
... 
data = data.replace(/(src|href|style)=['"]([^'"]+?)['"]/gi, 
function(match, attribute) { 
    return (attribute.toLowerCase() === 'style') 
     ? attribute + '=""'    /* remove all inline style */ 
     : attribute + '="data:null"'; /* href and src set to data:null */ 

}) 

/* append filtered data */ 
$(data).appendTo($('body_or_other_element')) 
+0

1.黑名單過濾不是自動防故障方法。 2.你不需要DOM。 – 2012-01-13 12:08:37

+0

1.它不是100%安全,但應涵蓋常見情況。你能澄清嗎? – fcalderan 2012-01-13 12:10:37

+0

1.不,這是「不是故障安全」的定義 - 不要這樣做,因爲「常見情況」是不夠的。這是您不希望的問題。 2.閱讀其他人的評論。 – 2012-01-13 12:18:25

0

如果可能,請使用jQuery,如上所述。它可以根據需要輕鬆選擇部分頁面DOM。

下面是一些例子:

你可以抓住標籤href屬性是這樣的:$( 「A」,$(ajax_response))ATTR( 「HREF」);標題內容:$(「title」,$(ajax_response))。html();

你可能需要測試一下選擇器,看看哪個工作最好,但是,我認爲這將是一個簡單的方法。

相關問題