2011-08-10 49 views
0

我想將相同的html元素附加到當前TAB的文檔DOM。 我希望這些html擴展元素能夠「永遠」生存,所以我想構建它們一次,並將它們追加到內容腳本加載的每一頁上。通過背景腳本將HTML元素附加到DOM

我正在考慮將createElement放在後臺頁面。 然後,對於每一個網頁加載,我希望內容腳本與後臺腳本進行通信,因此它會將它們附加到當前的TAB文檔DOM。 這是很好的做法嗎? 我的問題是,我不知道如何將html元素從背景頁面附加到DOM。 你能幫忙嗎?

+0

也許你正在尋找的東西就像一個瀏覽器操作彈出? – serg

回答

2

這是行不通的。後臺頁面存在於一個進程中,另一個進程中的選項卡 - 您不能將對象從一個發送到另一個,只有文本數據(發送的對象會自動轉換爲JSON)。因此,您最好的機會是:在背景頁面中一起構建所有內容,然後獲取元素的innerHTML,並在必要時將此文本發送到內容腳本。內容腳本應該創建一個新元素,並將它的innerHTML設置爲它收到的值。

+0

謝謝弗拉基米爾·帕蘭特。 – user887400

+0

感謝弗拉基米爾Palant給你答案,但也許你可以告訴我如何建立一個永久生活的界面,並通過圖標點擊事件將其放置在每個html頁面之上?非常感謝!! – user887400

0

您需要在內容腳本中執行此操作,因爲「內容腳本」是在頁面和Chrome擴展程序之間的環境中運行的腳本。 see this。記住這些腳本會加載到每個頁面加載,並且它們不會影響已打開的選項卡。 作爲一個例子,你可以這樣

var theScript = document.createElement('script'); 
theScript.src = "http://mybwesite.com/static/js/myscript.js" 
document.body.appendChild(theScript); 

只要你在manifist增加它的權限添加外部腳本:

"permissions": [ 
    "activeTab", 
    "tabs", 
     "http://*/*", "https://*/*" 
    ], 
    "content_scripts": [ 
     { 
     "matches": ["<all_urls>"], 
     "js": ["js/contentscript.js"] 
     } 
    ]