gpt4 book ai didi

javascript - tabs.executeScript - 传递参数和使用库?

转载 作者:行者123 更新时间:2023-12-03 21:33:27 25 4
gpt4 key购买 nike

我正在编写一个Chrome扩展程序,需要根据某些给定参数修改特定域中的页面,这需要XSS才能获取,因此简单地使用内容脚本似乎是不可能的。因此,我决定使用 tabs.executeScript 注入(inject)脚本。

现在我需要知道两件事:第一,使用executeScript时如何向脚本传递参数?我想我可以使用消息,但是在注入(inject)脚本时是否有更直接的方法来传递参数?

其次,我的脚本使用 jQuery,因此我需要以某种方式包含 jQuery。这很愚蠢,但我不知道该怎么做。到目前为止,我已将 jQuery 嵌入到我正在编写的 HTML 页面中(例如 background.html)。

最佳答案

如果您不想使用消息传递,则:

chrome.tabs.executeScript(tabId, {file: "jquery.js"}, function(){
chrome.tabs.executeScript(tabId, {code: "var scriptOptions = {param1:'value1',param2:'value2'};"}, function(){
chrome.tabs.executeScript(tabId, {file: "script.js"}, function(){
//all injected
});
});
});

(jquery.js 应放入扩展文件夹中)。脚本选项将在 script.jsscriptOptions 变量中可用。

使用消息传递也同样简单:

chrome.tabs.executeScript(tabId, {file: "jquery.js"}, function(){
chrome.tabs.executeScript(tabId, {file: "script.js"}, function(){
chrome.tabs.sendMessage(tabId, {scriptOptions: {param1:'value1',param2:'value2'}}, function(){
//all injected
});
});
});

您需要向 script.js 添加请求监听器:

chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
var scriptOptions = message.scriptOptions;
console.log('param1', scriptOptions.param1);
console.log('param2', scriptOptions.param2);
doSomething(scriptOptions.param1, scriptOptions.param2);
});

关于javascript - tabs.executeScript - 传递参数和使用库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4976996/

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