gpt4 book ai didi

javascript - console.log 不适用于 chrome.tabs.executeScript

转载 作者:行者123 更新时间:2023-11-29 15:45:10 24 4
gpt4 key购买 nike

我需要在用户单击我的上下文菜单项后执行脚本。

为此,我从后台 js 创建了上下文菜单:

chrome.contextMenus.create({"title": title, "contexts": contexts,
"onclick": genericOnClick});

它按预期显示。后来从 genericOnClick 我尝试执行我的脚本:

chrome.tabs.executeScript(null, {code: "console.log('test 1');"}, function() {
console.log("test 2");
});

我可以看到“test 2”被打印到控制台,但“test 1”从未被打印出来。我究竟做错了什么?我试过将 console.log 语句添加到一个单独的 js 文件中,但它也无法打印:

chrome.tabs.executeScript(null, {"file": 'content_script.js'}, function() {
console.log("test 2");
});

注意:我的 content_script.js 没有在 list 中定义。我的 list 如下所示:

{
"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"
}
}

提前谢谢你。

最佳答案

您的扩展中唯一可以访问控制台的代码是注入(inject)原始页面的内容脚本

从您的代码看来,您正试图从后台脚本 写入控制台。因此,要从后台页面写入控制台,您必须注入(inject)一个内容脚本来为您完成这项工作。

在我的扩展中,我使用自己的函数后台脚本 向控制台写入消息。其代码如下:

function logMessage(msg){
chrome.tabs.executeScript({code:"console.log('"+msg+"')"});
}

将上述定义为后台脚本中的第一个函数,并从后台脚本中的任何位置调用它以将消息写入控制台。

在您的情况下,您可以使用 genericOnClick 函数将消息写入控制台。

关于javascript - console.log 不适用于 chrome.tabs.executeScript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12615515/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com