gpt4 book ai didi

javascript - 将参数传递给使用 chrome.tabs.executeScript() 注入(inject)的内容脚本

转载 作者:IT王子 更新时间:2023-10-29 03:05:02 24 4
gpt4 key购买 nike

如何将参数传递给使用以下方式注入(inject)的内容脚本文件中的 JavaScript:

chrome.tabs.executeScript(tab.id, {file: "content.js"});

最佳答案

没有“将参数传递给文件”这样的事情。

可以做的是在执行文件之前插入内容脚本,或者在插入文件之后发送消息。我将在下面展示这些不同方法的示例。

执行JS文件前设置参数

如果想在插入文件前定义一些变量,嵌套chrome.tabs.executeScript即可调用:

chrome.tabs.executeScript(tab.id, {
code: 'var config = 1;'
}, function() {
chrome.tabs.executeScript(tab.id, {file: 'content.js'});
});

如果你的变量不是那么简单,那么我建议使用 JSON.stringify在字符串中转换一个对象:

var config = {somebigobject: 'complicated value'};
chrome.tabs.executeScript(tab.id, {
code: 'var config = ' + JSON.stringify(config)
}, function() {
chrome.tabs.executeScript(tab.id, {file: 'content.js'});
});

使用前面的方法,可以通过以下方式在 content.js 中使用变量:

// content.js
alert('Example:' + config);

执行JS文件后设置参数

JS文件后可以使用前面的方法设置参数。您可以使用 message passing API 而不是直接在全局范围内定义变量传递参数:

chrome.tabs.executeScript(tab.id, {file: 'content.js'}, function() {
chrome.tabs.sendMessage(tab.id, 'whatever value; String, object, whatever');
});

在内容脚本 (content.js) 中,您可以使用 chrome.runtime.onMessage 监听这些消息事件,并处理消息:

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
// Handle message.
// In this example, message === 'whatever value; String, object, whatever'
});

关于javascript - 将参数传递给使用 chrome.tabs.executeScript() 注入(inject)的内容脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17567624/

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