我正在为Google Chrome浏览器扩展程序。这使我们的用户可以直接从其在线页面上通过在线产品提交支持票。
我一直在使用页面规则将扩展名限制为仅我们的产品页面。我们的某些用户弹出窗口不再起作用,因此遇到了问题。
这是我们的某些用户在进入我们的产品页面时所看到的。当用户看到扩展图标时,它也是全色的。不确定这是否有用。
我无法重新创建问题。我们大多数用户都是远程制作,很难诊断。
要重现此问题,我尝试强制退出chrome并重新打开。另外,重新启动计算机并没有重新创建它。
看来,删除扩展名并重新安装它可以解决此问题。
这是我用来启用/禁用扩展程序的代码。
const PAGE_RULE = [{
id: 'DISPLAY_RULE_SS',
conditions: [
new chrome.declarativeContent.PageStateMatcher({
pageUrl: {hostSuffix: '.localhost.com', pathPrefix: '/app/'},
}),
],
actions: [new chrome.declarativeContent.ShowPageAction()],
},]
chrome.runtime.onInstalled.addListener(function() {
chrome.tabs.onActivated.addListener((activeInfo) => {
chrome.declarativeContent.onPageChanged.getRules(['DISPLAY_RULE_SS'], (rules) => {
if(rules.length !== 0){
return;
}
chrome.declarativeContent.onPageChanged.addRules(PAGE_RULE);
});
});
});
这是我的清单。
{
"name" : "Support App",
"version" : "0.0.3",
"description" : "Fill in a brief description of your issue, along with a few details, and our support team will be notified immediately.",
"manifest_version" : 2,
"icons": {
"128" : "./img/murmuration_square_transparent.png"
},
"background" : {
"scripts" : ["./backgrounds/default_background.js"],
"persistent" : false
},
"permissions" : [
"history",
"tabs",
"declarativeContent",
"activeTab",
"https://*.localhost.com/*",
],
"page_action" : {
"default_icon" : "./img/murmuration_square_transparent.png",
"default_popup" : "../default_interface.html"
},
"web_accessible_resources": [
"src/default_index.js"
]
}
我怀疑问题与所有逻辑都在chrome.runtime.onInstalled.addListener(function() {...}
之内有关,但我不确定。
感谢您的帮助。
答案 0 :(得分:0)
经过一段时间的停机后,我返回到此页面,并在Google文档中找到了解决方案。 this page状态的文档
侦听器必须从页面开始同步注册。
这正是我设置页面规则时所做的。
我还在this page上发现
规则在浏览会话中保持不变。因此,您应该 使用扩展程序在扩展安装期间安装规则 runtime.onInstalled事件。请注意,当 扩展程序已更新。因此,您应该先事先清除 安装规则,然后注册新规则。
所以我已经更新了后台脚本以运行以下命令
chrome.runtime.onInstalled.addListener(details => {
chrome.declarativeContent.onPageChanged.removeRules(undefined, () => {
chrome.declarativeContent.onPageChanged.addRules(PAGE_RULE);
});
});
文档中推荐的是哪个。这似乎已经解决了我们遇到的问题。