gpt4 book ai didi

javascript - 谷歌浏览器 - 扩展程序和网页不通信

转载 作者:行者123 更新时间:2023-11-30 16:18:04 25 4
gpt4 key购买 nike

我正在尝试从网页访问扩展程序以及从扩展程序访问网页。这是我接下来的单元测试,但都失败了。我如何从我的网页扩展中获得反馈?以及如何验证我的网页是否已连接到扩展程序或者它是否收到了查询?

扩展 list .json:

{
"name" : "Idle - Simple Example",
"version" : "1.0.1",
"description" : "Demonstrates the Idle API",
"externally_connectable": {
"matches": ["http://localhost/*"]
},
"background" : {
"scripts": ["background.js"]
},
"permissions" : [ "idle" ],
"manifest_version": 2
}

扩展 background.js:

chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {greeting: "hello"}, function(response) {
console.log(response.farewell);
});
});

chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(sender.tab ? "from a content script:" + sender.tab.url : "from the extension");
if (request.greeting == "hello")
sendResponse({farewell: "goodbye"});
});

网页http://localhost/index.html :

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>I am WebPage</title>
</head>
<body>

<script type="text/javascript" >
if(chrome && chrome.runtime && chrome.runtime.sendMessage) {
console.log("Step 1: trying");
chrome.runtime.sendMessage("omodcbfdcmifigpokakmlmobfidhgnij",{greeting: "hello"}, function(response) {
console.log(response);
});

}
</script>

</body>
</html>

最佳答案

注意:

有太多的困惑。没有很好的解释和记录。我们应该在这里很好地回答他们,这样就足够清楚了。

使用 localhost 并不重要,它可以与 Google Chrome 一起使用。我能够以 http://localhost/index.html 运行它无需制作假域名。


此步骤的目标:使我的网页(此处网页表示http://或https://www.example.com/file_iam_working.html)连接extension(此处< strong>extension 表示 manifest.json 和 background.js 文件),还有一个叫 app 的,以免混淆整个事情,我们正在努力关于此问题的网页扩展

稍后我将仅针对 app 编写文档,以便您轻松阅读并自行完成,而不会浪费太多时间。不要混淆。


第 1 步:制作 manifest.jsonbackground.js 来制作我们的扩展


list .json:

{
"name" : "Idle - Simple Example",
"version" : "1.0.1",
"description" : "Demonstrates the Idle API",
"externally_connectable": {
"matches": [
"*://localhost/*"
]
},
"background": {
"scripts": [ "background.js" ]
},
"permissions" : [
"idle",
"*://localhost/*"
],
"manifest_version": 2
}

背景.js:

console.log("Step 1 - boot");
chrome.runtime.onMessageExternal.addListener(function(request, sender, sendResponse) {
console.log(sender.tab ? "from a content script:" + sender.tab.url : "from the extension");
if (request.greeting == "hello")
sendResponse({farewell: "goodbye"});
});

第 2 步:在谷歌浏览器中加载扩展


a) 导航到: enter image description here

b) 点击第一个按钮,加载目录/文件夹 enter image description here

c) 一旦它作为扩展 重新加载,您将看到如下(大约)并且它有一个 ID。如果它是应用程序,它会有另一个名为“启动”的按钮,我们不会将其作为应用程序,因此请忽略它。

enter image description here

第 3 步:运行您的网页以连接到您刚刚准备的扩展程序


a) 运行网络服务器

enter image description here

b) 制作您的网页,以便您可以将其打开为 http://localhost/index.htmlhttps://localhost/index.html,在这个例子我们正在为 http:// 做这个防弹。所以我制作了一个文件 index.html 并带有以下源代码。

index.html:

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>I am WebPage, like Facebook or Stackoverflow. Think like kid of 5 years old</title>
<link rel="stylesheet" href="css/style.css" type="text/css"/>
<script type="text/javascript" src="js/jquery-2.1.1.min.js"></script>
</head>
<body>

<script type="text/javascript" >

if(chrome && chrome.runtime && chrome.runtime.sendMessage) {
console.log("Step 1: trying");
chrome.runtime.sendMessage("omodcbfdcmifigpokakmlmobfidhgnij",{greeting: "hello"}, function(response) {
console.log(response);
});

}
</script>

</body>
</html>

第 4 步:在您的 google chrome 中转到控制台并查看从扩展网页的输出,如下所示:


enter image description here

保持微笑 :) 并使答案更简单,这样 children 就可以学习它,而不必认为它的火箭科学很复杂。

关于javascript - 谷歌浏览器 - 扩展程序和网页不通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35186249/

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