【问题标题】:Chrome: message content-script on runtime.onInstalledChrome:runtime.onInstalled 上的消息内容脚本
【发布时间】:2013-05-03 11:21:03
【问题描述】:

我是一个名为 BeautifyTumblr 的插件的制造者,它改变了 Tumblr 的外观。 我希望我的 Chrome 扩展程序能够自动检测何时更新并向用户显示更改日志。我使用带有 chrome.runtime.onInstalled.addListener 钩子的事件页面来检测何时发生更新,从扩展中的文本文件中检索更改日志。这一切正常,然后当我想将其转发到我的内容时通过 chrome.tabs.sendmessage 编写脚本它只是无法工作,什么都没有发生,没有错误,什么都没有。我被难住了。

任何帮助将不胜感激!

活动页面:

chrome.runtime.onInstalled.addListener(function (details) {
    "use strict";
    if (details.reason === "install") {

    } else if (details.reason === "update") {
        var thisVersion = chrome.runtime.getManifest().version, xmlDom, xmlhttp;
        xmlDom = null;
        xmlhttp = new XMLHttpRequest();
        xmlhttp.open("GET", chrome.extension.getURL("changelog.txt"), false);
        xmlhttp.send(null);
        xmlDom = xmlhttp.responseText;
        chrome.tabs.query({'url' : 'http://www.tumblr.com/*'}, function (tabs) {
            if (tabs.length > 0) {
                var mTab = tabs[0].id;
                chrome.tabs.update(mTab, {active: true});
                setTimeout(chrome.tabs.sendMessage(mTab, {beautifyTumblrUpdate: xmlDom}), 500);
            } else {
                chrome.tabs.create({'url' : 'http://www.tumblr.com/dashboard'}, function (tab) {
                    setTimeout(chrome.tabs.sendMessage(tab.id, {beautifyTumblrUpdate: xmlDom}), 500);
                });
            }
        });
    }
});

内容脚本中的相关代码:

chrome.runtime.onMessage.addListener(
    function (request, sender, sendResponse) {
        "use strict";
        window.alert('test');
        if (request.beautifyTumblrUpdate) {
            window.alert(request.beautifyTumblrUpdate);
        } else if (request.beautifyTumblrInstall) {
            window.alert(request.beautifyTumblrInstall);
        }
    }
);

【问题讨论】:

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


    【解决方案1】:

    我也看到了同样的事情。我不是 100% 确定,但我认为这是因为 chrome 在扩展更新时关闭了背景页面和“旧”内容脚本之间的连接。此错误中有更多信息:https://code.google.com/p/chromium/issues/detail?id=168263

    【讨论】:

      【解决方案2】:

      简单,后台使用如下代码,

      chrome.runtime.onInstalled.addListener(function(details){
      if(details.reason == "install"){
      chrome.tabs.create({ url: chrome.extension.getURL('welcome.html')});  
      }
      
      });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 2015-05-03
        • 2020-10-12
        • 1970-01-01
        • 1970-01-01
        • 2019-11-05
        • 1970-01-01
        相关资源
        最近更新 更多