3

Gmail のメールのすぐ下にデバンクを挿入することで、チェーン メールと戦う Chrome 拡張機能を作成しました。

問題は、ユーザーが拡張機能を追加したときに、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 に答える