gpt4 book ai didi

jquery - Chrome 扩展程序 将消息从后台发送到内容脚本

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

我是 Chrome 扩展的新手,在这个问题上花了几个小时后,我决定问:

一旦我重新加载扩展程序并快速更改到选项卡,我的后台脚本只会向我的内容脚本发送一条消息。否则什么也不会发生。

 {
"name": "Fixes",
"version": "2",
"manifest_version": 2,
"description": "SomeFixes",
"permissions": ["tabs", "http://*/*", "https://*/*", "storage"],
"options_page": "options.html",
"background": {
"persistent": false,
"scripts": ["background.js"]
},
"content_scripts": [
{
"matches": ["<all my urls>"],
"js": ["jquery1.7.js", "helper.js"]
}
],
"browser_action": {
"default_icon": "icon.png",
"default_popup": "options.html"
}
}

背景.js

chrome.tabs.query({active: true, currentWindow: true}, function(tabs){

chrome.tabs.sendMessage(tabs[0].id, {type:"test"}, function(response) {});

});

helper.js

jQuery(document).ready(function() {
//Get allowed functions
chrome.extension.onMessage.addListener(function(msg, sender, sendResponse) {

if(msg.type == "test"){

alert("test received");

});

警报框仅在重新加载扩展程序后才会触发,并快速切换到应该显示警报框的选项卡。

所以我认为每次重新加载选项卡时,background.js 都应该加载。但现在它只加载一次,如果我不在该选项卡上,它会在 helper.js 准备发送响应之前加载。这就是我的理论。但正如我所说,我对此很陌生,而且我很难理解它是如何工作的。

最终我想要完成的是让用户保存一些选项,这些选项将在每次页面加载时默认加载。在选项页面中保存选项效果很好。弹出页面也可以正常工作。我只是无法加载默认选项,因为我无法将消息发送到内容脚本页面。

最佳答案

每次加载扩展程序时,后台页面都会运行,并且由于它是一个事件页面,因此它将卸载,并且它的任何事件都会再次执行您的代码。尝试这样做

helper.js

chrome.extension.sendMessage({text:"getStuff"},function(reponse){
//This is where the stuff you want from the background page will be
if(reponse.type == "test")
alert("Test received");
});

背景.js

chrome.extension.onMessage.addListener(function(message,sender,sendResponse){
if(message.text == "getStuff")
sendResponse({type:"test"});
});

通过这种方式,内容脚本启动信息流,以便您确定它已准备好接收信息。

关于jquery - Chrome 扩展程序 将消息从后台发送到内容脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15575030/

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