Javascript 简单铬延伸
我正在构建一个简单的chrome扩展: manifest.jsonJavascript 简单铬延伸,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我正在构建一个简单的chrome扩展: manifest.json { "name": "Hello World", "version": "1.0", "manifest_version": 2, "background": { "scripts": ["js/background.js"] }, "description": "My First Chrome Extension", "browser_action":
{
"name": "Hello World",
"version": "1.0",
"manifest_version": 2,
"background": {
"scripts": ["js/background.js"]
},
"description": "My First Chrome Extension",
"browser_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": ["tabs", "activeTab", "<all_urls>"],
"content_scripts": [
{
"matches": ["http://*/*"],
"js": ["js/script.js"]
}
]
}
scripts.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ?
"from a content script:" + sender.tab.url :
"from the extension");
if (request.greeting == "hello") {
sendResponse({farewell: "goodbye"});
document.write(request.greeting);
}
});
popup.html
<script src="js/script.js"></script>
新按钮正确地出现在我的chrome窗口中,但当我单击它时,会创建一个空对话框,尽管我希望它会说“你好”。有什么建议吗?如果您在清单中设置了“默认弹出窗口”:“popup.html”,chrome会打开一个窗口来显示您的html页面。因此,从清单(无需popup.html文件)中删除这一行,并在background.js中执行如下操作:
chrome.browserAction.onClicked.addListener(function() {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
console.log(response.farewell);
});
});
});
创建了一个空对话,尽管我希望它说“你好”
您正在调用document.write
来自内容脚本,而不是弹出代码-因此它正在写入实际的活动选项卡,而不是弹出窗口
要在弹出窗口中显示某些内容,您需要与弹出窗口代码中的
文档进行交互。似乎不是答案;当我仔细阅读这个问题时,OP似乎希望“hello”出现在弹出窗口中。您几乎肯定不希望js/script.js成为弹出脚本和内容脚本。回顾历史。
chrome.browserAction.onClicked.addListener(function() {
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
console.log(response.farewell);
});
});
});