當我開始學習chrome擴展時,我被困在一個基本程序中。我的程序是構建一個擴展,該擴展具有更改網頁顏色的按鈕。更改顏色應該是操作驅動的,這就是為什么我沒有使用默認css在頁面加載時更改顏色的原因。以下是我的文件。我遇到的問題是后臺的chrome.tabs.query.js沒有返回tabs數組,我得到“ID未引用錯誤”任何幫助都是值得贊賞的。我已經在谷歌和StackOverflow上搜索了n篇文章,但沒有什么可以幫助我Files: manifest.json {"manifest_version": 2,"name": "Hello world","description": "Demo extension", "version": "1.0", "icons":{"16": "images/dog.png", "48": "images/dog.png","128": "images/dog.png"},"background": { "persistent": false, "scripts": ["background.js"] },"browser_action":{"default_icon": "images/dog.png","default_popup": "popup.html"},"content_scripts": [{ "js": ["content.js"], "matches": ["<all_urls>"] }],"permissions": ["tabs", "http://*/*","activeTab"]}背景.jschrome.runtime.onMessage.addListener( function(message, sender, sendResponse) { switch(message.type) { case "setcolor": chrome.tabs.query({active: true, currentWindow: true}, function(tab){ chrome.tabs.sendMessage(tab[0].id,{type: "setcolor",color: message.color}) }); break; default: console.error("Unrecognised message: ", message); }彈出窗口.html<!DOCTYPE html><html><head></head><body><p id="demo">Click below button to change color of page</p><button type="button" id = "red"> RED </button><script src = "myscript.js"></script></body></html> myscript.js(或彈出窗口.js)function color(colorval) { chrome.runtime.sendMessage({type: "setcolor",color: colorval})}document.getElementById('red').addEventListener('click', color('red'));內容.jschrome.runtime.onMessage.addListener( function(message, sender, sendResponse) { document.body.style.backgroundColor = message.color; });
chrome.tabs.query 未將消息傳遞到內容.js
HUX布斯
2022-09-02 17:19:18