将参数传递给使用 chrome.tabs.executeScript() 注入的内容脚本
使用 chrome.tabs.executeScript 注入内容脚本文件时({file: "content.js"}),出现一个常见问题:如何在内容脚本文件中向 JavaScript 传递参数?
参数传递谬误
需要澄清的是,您不能直接将参数传递到文件。相反,您有两种选择来实现此功能:
1。在文件执行之前设置参数
在注入文件之前嵌套 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);
2.文件执行后设置参数
先执行文件,然后使用消息传递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'
});
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3