Chrome扩展程序需要手动重新激活才能显示

时间:2012-09-05 21:49:05

标签: email google-chrome google-chrome-extension

我们已经构建了一个Chrome扩展程序,可以通过在Gmail下方直接插入电子邮件来消除链接电子邮件。

问题在于,当用户添加扩展程序时,直到您返回chrome:// extensions /并取消激活,然后重新激活浏览器扩展程序才会显示该扩展程序。我不确定我们需要做些什么来解决这个问题。

执行此操作后,扩展程序将起作用。

如果您:

,则可以复制该问题
  1. 从中下载代码的ZIP http://github.com/dkang9322/chrome_extension
  2. 解压缩扩展程序下载
  3. 转到chrome:// extensions /并在顶部激活开发者模式 扩展页右侧
  4. 点击“加载解压缩的扩展程序”并选择解压缩的扩展程序 您的驱动器中的目录
  5. 这将安装扩展程序,但在您导航回扩展程序页面并取消激活,然后重新激活扩展程序之前,它不会显示在您的Gmail中。然后,如果你去看电子邮件,你会看到它。

    非常感谢你随时可能要研究这个问题。

1 个答案:

答案 0 :(得分:0)

刷新要运行内容脚本的选项卡应该可以解决问题,但是如果您不想要求您可以“按需”将内容脚本注入需要的选项卡中扩展开始时,如下所示:

// Injects content_script.js into tab with id 1234
injectScriptInTab('content_script.js', 1234);

function injectScriptInTab(url, tabId) {
    readFile(url, function(scriptBody) {
        chrome.tabs.executeScript(tabId, { code: scriptBody });
    });
}

function readFile(url, callback) {
    var xhr = new XMLHttpRequest();
    try {
        xhr.onreadystatechange = function(){
            if (xhr.readyState != 4) {
                return;
            }

            if (xhr.responseText) {
                callback(xhr.responseText);
            }
            else {
                throw new Error('No data returned for readFile: ' + url);
            }
        }
        xhr.onerror = function(error) {
            console.error(error);
        }
        xhr.open("GET", url, true);
        xhr.send(null);
    } catch(e) {
        console.error(e);
    }
}

为了保持理智,您可能希望在content_script.js中添加一些内容,以防止脚本在给定选项卡中被多次执行,例如。

if (window.loadedMyContentScript) return;
window.loadedMyContentScript = true;
/* remainder of content script */