4

私のChrome拡張機能がChromeの起動時に読み込まれると、すべてが正常であるように見え、chrome.extension.getBackgroundPage()は正しい値(popup.jsから起動)を返します。しかし、しばらくすると(2〜3分)、特にブラウザがおろそかになっている場合、関数はnullを返します。クロムを閉じて再度開くだけで問題が解決します。私はそれを操作しようとしました:

if (chrome.extension.getBackgroundPage() == null) window.location.reload(true);

で提案されているように、chrome.extension.getBackgroundPage()がnullを返すのはなぜですか?、これは役立つこともありますが、ほとんどの場合、アプリを更新し続けるため、Chromeを閉じる必要があります。誰かが何が間違っているのか考えていますか?

4

2 に答える 2

8

参照ページ(イベントページと背景ページの違い)によると、イベントページを使用しながら背景を取得するためのより良いオプションがあります。

拡張機能でextension.getBackgroundPageを使用している場合は、代わりにruntime.getBackgroundPageに切り替えてください。新しいメソッドは非同期であるため、必要に応じてイベントページを返す前に開始できます。

これは私にとってはうまくいきました。関数パラメーターとしてバックグラウンドページを受け取る非同期コールバックであなたの仕事をしてください。

メソッドruntime.getBackgroundPageの仕様は次のとおりです。

于 2013-04-02T14:47:35.240 に答える
3

背景(イベントページ)を実際の背景ページに変更します。

マニフェストファイルをから変更します

"background": {
        "scripts": [
            "background.js"
        ],
        "persistent": false
    }

"background": {
        "scripts": [
            "background.js"
        ],
        "persistent": true
    }

イベントページはバックグラウンドページと非常に似ていますが、重要な違いが1つあります。イベントページは、必要な場合にのみ読み込まれます。イベントページがアクティブに何かを実行していない場合、イベントページはアンロードされ、メモリやその他のシステムリソースが解放されます。

参照

于 2013-02-17T17:24:47.430 に答える