我想將相同的html元素附加到當前TAB的文檔DOM。 我希望這些html擴展元素能夠「永遠」生存,所以我想構建它們一次,並將它們追加到內容腳本加載的每一頁上。通過背景腳本將HTML元素附加到DOM
我正在考慮將createElement放在後臺頁面。 然後,對於每一個網頁加載,我希望內容腳本與後臺腳本進行通信,因此它會將它們附加到當前的TAB文檔DOM。 這是很好的做法嗎? 我的問題是,我不知道如何將html元素從背景頁面附加到DOM。 你能幫忙嗎?
我想將相同的html元素附加到當前TAB的文檔DOM。 我希望這些html擴展元素能夠「永遠」生存,所以我想構建它們一次,並將它們追加到內容腳本加載的每一頁上。通過背景腳本將HTML元素附加到DOM
我正在考慮將createElement放在後臺頁面。 然後,對於每一個網頁加載,我希望內容腳本與後臺腳本進行通信,因此它會將它們附加到當前的TAB文檔DOM。 這是很好的做法嗎? 我的問題是,我不知道如何將html元素從背景頁面附加到DOM。 你能幫忙嗎?
這是行不通的。後臺頁面存在於一個進程中,另一個進程中的選項卡 - 您不能將對象從一個發送到另一個,只有文本數據(發送的對象會自動轉換爲JSON)。因此,您最好的機會是:在背景頁面中一起構建所有內容,然後獲取元素的innerHTML
,並在必要時將此文本發送到內容腳本。內容腳本應該創建一個新元素,並將它的innerHTML
設置爲它收到的值。
謝謝弗拉基米爾·帕蘭特。 – user887400
感謝弗拉基米爾Palant給你答案,但也許你可以告訴我如何建立一個永久生活的界面,並通過圖標點擊事件將其放置在每個html頁面之上?非常感謝!! – user887400
您需要在內容腳本中執行此操作,因爲「內容腳本」是在頁面和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"]
}
]
也許你正在尋找的東西就像一個瀏覽器操作彈出? – serg