Javascript console.log不';无法从chrome.tabs.executeScript工作
我需要在用户单击我的上下文菜单项后执行脚本 为此,我从我的背景js创建了上下文菜单:Javascript console.log不';无法从chrome.tabs.executeScript工作,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我需要在用户单击我的上下文菜单项后执行脚本 为此,我从我的背景js创建了上下文菜单: chrome.contextMenus.create({"title": title, "contexts": contexts, "onclick": genericOnClick}); 这似乎是意料之中的事。稍后,我尝试从genericOnClick执行脚本: chrome.tabs.executeScript(null, {c
chrome.contextMenus.create({"title": title, "contexts": contexts,
"onclick": genericOnClick});
这似乎是意料之中的事。稍后,我尝试从genericOnClick执行脚本:
chrome.tabs.executeScript(null, {code: "console.log('test 1');"}, function() {
console.log("test 2");
});
我可以看到“测试2”被打印到控制台,但“测试1”从未被打印。我做错了什么?
我尝试将console.log语句添加到单独的js文件中,但也无法打印:
chrome.tabs.executeScript(null, {"file": 'content_script.js'}, function() {
console.log("test 2");
});
注意:清单中未定义my content_script.js。我的清单如下所示:
{
"name": "My First Extension",
"version": "1.0",
"manifest_version": 2,
"description": "Sample extension",
"page_action": {
"default_icon": "icon.png",
"default_popup": "popup.html"
},
"permissions": [
"http://*/*",
"https://*/*",
"tabs",
"contextMenus"
],
"background": {
"scripts": ["sample.js"]
},
"icons": {
"16": "icon16.png"
}
}
先谢谢你
// addListener
chrome.browserAction.onClicked.addListener(function() {
chrome.tabs.executeScript(null, {file: "content_script.js"}, function() {
console.log("test 2");
});
});
// Context Menu
chrome.contextMenus.create({
title: myTitle,
contexts: ['page'],
onclick: function (detail, tab) { fn(tab) }
});
所以,
或:
扩展中唯一可以访问控制台的代码是注入原始页面的内容脚本 从您的代码来看,似乎您正试图从后台脚本写入控制台。因此,要从后台页面写入控制台,您必须插入一个内容脚本来完成这项工作 在我的扩展中,我使用自己的函数从后台脚本向控制台写入消息。其代码如下所示:
function logMessage(msg){
chrome.tabs.executeScript({code:"console.log('"+msg+"')"});
}
将上述函数定义为后台脚本中的第一个函数,并从后台脚本中的任何位置调用它,以将消息写入控制台
在您的情况下,您可以使用genericOnClick函数将消息写入控制台。是的,您的代码可以正常工作,但如果我将document.body.style.backgroundColor='red'更改为某个console.log语句,它仍然无法工作。那么我应该如何调试代码呢?试试函数hi()sample ok?
// Functional structure
function hi() { alert("hi"); };
// hi function toString after run function (hi)()
chrome.tabs.executeScript(null, { code: "(" + hi.toString() + ")()" });
function logMessage(msg){
chrome.tabs.executeScript({code:"console.log('"+msg+"')"});
}