2013-03-19 113 views
1

我想知道創建Google Chrome擴展程序所需的所有組件和步驟,這些擴展程序可以從某個頁面內的iframe中刪除某些DOM元素。Chrome擴展程序刪除iframe中的DOM元素

我的研究表明,由於相同的原產地政策,這不可能通過常見的JavaScript。

手動刪除在Chrome中檢查代碼的DOM元素是據我得到的,但我想自動執行此。

從其他類似的問題(主要是this one),看來Chrome擴展程序,應該是能夠做到這一點。 我認爲this是最類似的問題,但至今尚未得到答覆,也不太清楚。

坦率地說,我可以把它從這裏,但我認爲其他人可能會受益於這個問題和答案,即使我最終回答自己。

例HTML:

<!DOCTYPE html> 
<html> 
<body> 
    <iframe src="iframe.htm"></iframe> 
</body> 
</html> 

而且iframe.htm

<!DOCTYPE html> 
<html> 
<body> 
    <div id="targetDiv"></div> 
</body> 
</html> 

最終結果應該是相同的運行(使用jQuery):

$('#targetDiv').remove(); 

這當然不工作。

+0

「主要這一個」鏈接涵蓋了你需要的一切。雖然它可以更簡單,你甚至不需要jQuery。 – 2013-03-19 20:58:44

回答

4

我完成了我想要的東西,所以這裏是答案。

你需要的Chrome擴展的第一件事就是清單文件,manifest.json。 這裏是一個工作示例:

{ 
    "manifest_version": 2, 

    "name": "iframe manipulation extension example", 
    "description": "This extension allows to run scripts that manipulate cross domain IFRAME contents.", 
    "version": "1.0", 

    "permissions": [ 
    "*://target-site.com/*" 
    ], 
    "content_scripts": [ 
    { 
     "matches": [ 
     "*://target-site.com/*" 
     ], 
     "js": ["script.js"], 
     "all_frames": true 
    } 
    ] 
} 

它有一些不言自明的值,然後permissionscontent_scripts。 它基本上說這個擴展只會在訪問target-site.com時才起作用。 我們指定我們想要運行的文件,並設置"all_frames": true,它將運行頁面中每個幀的文件。

你當然可以在清單中引用的文件中運行所需的任何JavaScript。

導航到chrome://extensions/加載你正在開發的擴展或包裝。

請注意,還有其他方法可以獲得運行腳本的擴展。這正是我最簡單的方法。