在沒有加載任何相關圖片/腳本/等的情況下,獲取可用AJAX的頁面的可用DOM的最佳方式是什麼?如何在不加載圖像/腳本的情況下在後臺加載和分析頁面?
背景故事: 我想加載背景頁面,然後進行排序就可以了數據挖掘的(這是一個瀏覽器擴展,所以我無法控制自己的網頁)。我不想花時間在後臺頁面上加載圖像和運行腳本,因爲它只是我需要的頁面內容。通過AJAX
在沒有加載任何相關圖片/腳本/等的情況下,獲取可用AJAX的頁面的可用DOM的最佳方式是什麼?如何在不加載圖像/腳本的情況下在後臺加載和分析頁面?
背景故事: 我想加載背景頁面,然後進行排序就可以了數據挖掘的(這是一個瀏覽器擴展,所以我無法控制自己的網頁)。我不想花時間在後臺頁面上加載圖像和運行腳本,因爲它只是我需要的頁面內容。通過AJAX
src
和href
屬性,或簡單地與data:null
改變這些屬性的值的標籤。如果數據還包含內嵌樣式應刪除包含對外部資源的引用(例如背景和邊框圖像,.htc
組件,XUL綁定,.ICO光標)第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'))
1.黑名單過濾不是自動防故障方法。 2.你不需要DOM。 – 2012-01-13 12:08:37
1.它不是100%安全,但應涵蓋常見情況。你能澄清嗎? – fcalderan 2012-01-13 12:10:37
1.不,這是「不是故障安全」的定義 - 不要這樣做,因爲「常見情況」是不夠的。這是您不希望的問題。 2.閱讀其他人的評論。 – 2012-01-13 12:18:25
如果可能,請使用jQuery,如上所述。它可以根據需要輕鬆選擇部分頁面DOM。
下面是一些例子:
你可以抓住標籤href屬性是這樣的:$( 「A」,$(ajax_response))ATTR( 「HREF」);標題內容:$(「title」,$(ajax_response))。html();
你可能需要測試一下選擇器,看看哪個工作最好,但是,我認爲這將是一個簡單的方法。
如果您通過AJAX請求URL,除非將其添加到DOM,否則不應加載資源。 – Jonathan 2012-01-13 09:44:52
是的,但如果我不添加到DOM,我將如何分析頁面內容? – 2012-01-13 09:50:16
這取決於你究竟如何分析頁面,但是,沒有理由需要將它添加到DOM。例如,如果您使用的是jQuery,那麼如果請求位於DOM中,則可以使用所有相同的選擇器。你能夠使用jQuery嗎?你正在爲此構建哪個瀏覽器?你能告訴我更多關於你想分析的內容嗎? – Jonathan 2012-01-13 09:57:12