我正在尝试开发一个可与Awesome New Tab Page一起使用的扩展程序。我已经按照作者对这封信的建议,但似乎我添加到后台页面的任何脚本都没有被执行。这是我的背景页面:
<script>
var info = {
poke: 1,
width: 1,
height: 1,
path: "widget.html"
}
chrome.extension.onRequestExternal.addListener(function(request, sender, sendResponse) {
if (request === "mgmiemnjjchgkmgbeljfocdjjnpjnmcg-poke") {
chrome.extension.sendRequest(
sender.id,
{
head: "mgmiemnjjchgkmgbeljfocdjjnpjnmcg-pokeback",
body: info,
}
);
}
});
function initSelectedTab() {
localStorage.setItem("selectedTab", "Something");
}
initSelectedTab();
</script>
这是manifest.json:
{
"update_url": "http://clients2.google.com/service/update2/crx",
"background_page": "background.html",
"name": "Test Widget",
"description": "Test widget for mgmiemnjjchgkmgbeljfocdjjnpjnmcg.",
"icons": {
"128": "icon.png"
},
"version": "0.0.1"
}
以下是widget.html的相关部分:
<script>
var selectedTab = localStorage.getItem("selectedTab");
document.write(selectedTab);
</script>
每次浏览器只显示null。根本没有设置本地存储,这使我认为后台页面完全断开连接。我有不正确的连线吗?
答案 0 :(得分:1)
如果我理解正确,后台页面会尝试在localStorage中存储内容,然后将widget.html传递给任何请求内容脚本/ app / extension,然后读取存储在localStorage中的信息。
如果这是你想要做的,那么问题可能是这个 - 后台页面和内容 - 脚本/其他应用程序/扩展无法直接访问彼此的localStorage(这是widget.html在其中运行时所执行的操作请求脚本/页面的沙箱)。您需要使用消息传递在后台页面和发送戳消息的脚本之间传递信息。
如果您只想检查后台页面是否响应,请在该页面中执行console.log('something'),然后在开发人员工具窗口中检查控制台上是否打印了“something”以获取后台页面
答案 1 :(得分:1)
显然,我几个月前因为沮丧而放弃了这个项目。我终于决定今天再次访问它,这就是我发现的:
以下是更新后的代码,您可以将其用作自己的Chrome或ANTP扩展程序的外壳程序。我还包括了ANTP使用poke v2所需的更改。
background.html:
<html>
<body>
<script>
(function () {
"use strict";
var info = {
poke: 2,
width: 1,
height: 1,
path: "widget.html",
v2: {
resize: false,
min_width: 1,
max_width: 1,
min_height: 1,
max_height: 1
}
};
chrome.extension.onRequestExternal.addListener(function (request, sender, sendResponse) {
if (request === "mgmiemnjjchgkmgbeljfocdjjnpjnmcg-poke") {
chrome.extension.sendRequest(
sender.id,
{
head: "mgmiemnjjchgkmgbeljfocdjjnpjnmcg-pokeback",
body: info
}
);
}
});
localStorage.setItem("foo", "bar");
}());
</script>
</body>
</html>
manifest.json完全一样。以下是widget.html的相关部分:
<script>
(function () {
"use strict";
var foo = localStorage.getItem("foo");
document.write(foo);
}());
</script>