gpt4 book ai didi

javascript - 将变量从 Chrome 扩展程序传递到打开的选项卡

转载 作者:行者123 更新时间:2023-11-28 04:36:49 27 4
gpt4 key购买 nike

在我的 google chrome 扩展程序中,用户单击链接,然后必须自动登录页面。
流程必须是这样的:用户单击 GC 扩展中的链接,脚本将获取所有必需的参数,然后发送到新打开的选项卡。
我的脚本必须插入传递的参数并执行一些操作。
但我不明白,如何将变量从 GC 扩展脚本传递到新打开的选项卡?
这是我的 list .json

"content_security_policy": "script-src 'self' https://ajax.googleapis.com; object-src 'self'",
"content_scripts": [
{
"js": [ "window/content.js"],
"matches": [
"https://steamcommunity.com/login/home/?goto=",
"http://steamcommunity.com/*",
"https://steamcommunity.com/*"
]
}
],
"background": {
"scripts": [
"./scripts/back.js"
]
},
"web_accessible_resources": [
"popup.js",
"window/content.js"
],
"permissions": [
"activeTab",
"tabs",
"<all_urls>",
"cookies",
"declarativeContent"
]


到目前为止我已经尝试在 main.js 中使用它:

chrome.tabs.executeScript(
tab1.id,
{code: "var test =" + test
allFrames: true
},
{file: "../popup.js"}, )
})

但是当单击执行时,脚本会打开新选项卡,并执行我编写的所有内容,但看不到变量“test”。

最佳答案

这并不难,只是有点棘手:您需要从内容脚本中附加注入(inject)代码。

考虑这个例子:

ma​​nifest.json

{
"manifest_version": 2,
"name": "My Extension",
"version": "1.0.0",

"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"],
"run_at": "document_end",
"all_frames":false
}
],

"web_accessible_resources": [
"inject.js"
]
}

content.js

var script = document.createElement('script'); 

script.src = chrome.extension.getURL('inject.js');
script.onload = function() {
window.postMessage({ type: "FROM_MY_EXTENSIONS", value: "123" }, "*");
}

document.body.appendChild(script);

inject.js

window.addEventListener("message", function(event) {
if(event.data.type === 'FROM_MY_EXTENSIONS') {
window._test = event.data.value;
console.log('_test:', _test);
}
}, false);

此扩展将在任何选项卡中使用内容脚本消息中的值创建新的 _test 变量。

关于javascript - 将变量从 Chrome 扩展程序传递到打开的选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44132079/

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