Chrome扩展程序弹出窗口操作不起作用

时间:2019-04-05 15:33:16

标签: javascript google-chrome google-chrome-extension

我正在为Google Chrome浏览器扩展程序。这使我们的用户可以直接从其在线页面上通过在线产品提交支持票。

我一直在使用页面规则将扩展名限制为仅我们的产品页面。我们的某些用户弹出窗口不再起作用,因此遇到了问题。

这是我们的某些用户在进入我们的产品页面时所看到的。当用户看到扩展图标时,它也是全色的。不确定这是否有用。

enter image description here

我无法重新创建问题。我们大多数用户都是远程制作,很难诊断。

要重现此问题,我尝试强制退出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() {...}之内有关,但我不确定。

感谢您的帮助。

1 个答案:

答案 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);
   });
});

文档中推荐的是哪个。这似乎已经解决了我们遇到的问题。