3

我们已经构建了一个 Chrome 扩展程序,通过在 Gmail 中直接在其下方插入电子邮件的揭穿来对抗连锁电子邮件。

问题是当用户添加扩展时,它不会出现,直到您返回 chrome://extensions/ 并停用,然后重新激活浏览器扩展。我不确定我们需要做些什么来解决这个问题。

完成此操作后,扩展工作。

如果您满足以下条件,则可以复制该问题:

  1. 从http://github.com/dkang9322/chrome_extension下载代码的 ZIP
  2. 解压扩展下载
  3. 转到 chrome://extensions/ 并在扩展页面右上角激活开发者模式
  4. 单击“加载解压扩展”并从驱动器中选择解压后的扩展目录

这将安装扩展程序,但在您导航回扩展程序页面并停用,然后重新激活扩展程序之前,它不会出现在您的 Gmail 中。然后,如果您转到电子邮件,您会看到它。

非常感谢您随时可能需要对此进行调查。

4

1 回答 1

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 */
于 2012-11-26T18:04:19.410 回答