我想了解有關Chrome擴展的知識,但我無法理解如何使用content_scripts
操縱頁面的DOM
。在Chrome擴展中操縱DOM
的manifest.json
{
"name": "First",
"version": "1.0",
"manifest_version": 2,
"description": "First extension",
"background": {
"scripts": ["test.js"]
},
"page_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"content_scripts": [ {
"js": [ "jquery.min.js", "popup1.js" ],
"matches": [ "http://*/*", "https://*/*" ]
} ],
"permissions" : [
"tabs",
"http://*/*"
]
}
test.js
function check(tab_id, data, tab){
if(tab.url.indexOf("google") > -1){
chrome.pageAction.show(tab_id);
}
};
chrome.tabs.onUpdated.addListener(check);
popup1.js
function myfunc(){
var x = $('#options option:selected').text();
$("body").append('Test');
alert(x);
//window.close();
}
$(document).ready(function(){
$('#options').change(myfunc);
});
上面的代碼/擴展工作正常,因爲myfunc
被調用,但它不會將Test
注入到google.com
的主體中。
所以,我在哪裏訪問/操作DOM錯誤。
首先,你不需要綁定到'ready',因爲你的內容腳本在'document_idle'處執行(默認),這保證在DOM準備就緒後發生。其次,請提供更多關於你在'myfunc'中看到的信息:或者你在控制檯中可能存在一些錯誤,或者你確實忽視了正文中添加的文本。我不確定,是不是'$(「body」)。append(document.createTextNode(「Test」));'? – Stan
順便說一句,如果您在追加後關閉窗口,您如何檢查身體? – Stan
另外我想確保你不會將'popup1.js'加載到popup.html中,並嘗試使用'popup1.js'作爲網頁的一部分並在彈出窗口中完成一些技巧時間。你有什麼要求?爲什麼你將內容腳本命名爲「彈出」? – Stan