Chrome插件上下文菜单在检查插件时的行为有所不同

时间:2017-09-23 22:57:40

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

我正在开发一个Google Chrome扩展程序,在单击上下文菜单项时会在本地存储中存储一些值。然而,我注意到,扩展的行为会有所不同,具体取决于是否正在检查。示例插件如下:

的manifest.json

{
  "manifest_version": 2,

  "name": "contextMenuTest",
  "description": "contextMenuTest",
  "version": "0.1",

  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },

  "permissions": [
      "activeTab",
      "storage",
      "unlimitedStorage",
      "contextMenus",
      "notifications"
  ],

  "icons": {
      "16": "icon.png"
  }
}

popup.html

<!doctype html>
<html>
<head>
    <script src= "popup.js"></script>
</head>
<body>
    <button id="setContextMenuButton">Set context menu</button>
    <button id="showResultButton">Show Answer</button>
</body>
</html>

popup.js

    document.addEventListener('DOMContentLoaded', function() {
    document.getElementById("setContextMenuButton").addEventListener("click", onsetcontextmenubuttonclick);
    document.getElementById("showResultButton").addEventListener("click", onshowresultbuttonclick);
});

function onsetcontextmenubuttonclick() {
    chrome.storage.local.clear(function() {
        chrome.contextMenus.removeAll(function() {
            chrome.contextMenus.create(
                {
                    "title": "test",
                    "contexts": ["selection"],
                    "onclick": function(info, tab) {
                        chrome.storage.local.set({"test":"test"});
                    }
                }
            );
        });
    });
}

function onshowresultbuttonclick() {
    chrome.storage.local.get("test", function(items) {
        console.log(items);
    });
}

检查弹出窗口时会出现预期的行为:检查弹出窗口,单击“设置上下文菜单”按钮,选择一些文本并右键单击它,在上下文菜单中单击“测试”,然后检查弹出窗口并单击“显示答案“按钮。 chrome.storage.local.set()设置“test”的值,因此chrome.storage.local.get()能够正确检索它并显示{test:“test”}。

但是,在没有检查弹出窗口的第一步的情况下执行相同的步骤时,会显示{},暗示chrome.storage.local.set()在弹出窗口时没有正确设置“test”的值没有被检查。

有一个类似的问题here,但它并没有完全回答我的问题。

为什么上下文菜单的行为会有所不同,具体取决于是否正在检查插件,以及如何解决此问题?

0 个答案:

没有答案