0

私は、Tumblr の外観を変更する BeautifyTumblr というアドオンの作成者です。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);
        }
    }
);
4

2 に答える 2

0

私も同じものを見ています。100% 確実ではありませんが、これは、拡張機能が更新された瞬間に、Chrome がバックグラウンド ページと「古い」コンテンツ スクリプトの間の接続を遮断するために発生すると考えられます。このバグには詳細があります: https://code.google.com/p/chromium/issues/detail?id=168263

于 2013-08-28T02:33:22.317 に答える