0

私はいくつかのものを実行する 1 つの主要なタスク (background.js) を持っています。

アプリのバックグラウンド スクリプトで新しいトリガー イベントを作成して、1 日 (24 時間) の新しいタイムアウトを作成する必要があります。しかし、入力したすべてのページをバックグラウンドでチェックしたくありません。やりたいことは、1 つの content_script ページを介して何らかの「メッセージ」をバックグラウンド タスク (同じアプリ) に送信することです。

必要なもの: content_script からバックグラウンドで関数を実行します。

出来ますか?どのように?

4

1 に答える 1

0

はい、メッセージパッシングで可能です。以下のスクリプトを参考にしてください。

デモンストレーション

次のコードは、コンテンツスクリプトからトリガーされると、バックグラウンドページで関数を実行します。

マニフェスト.json

拡張子を付けて背景とコンテンツのスクリプトを登録し、必要な権限を追加しました

{
    "name": "Run Background page function from content script",
    "description": "",
    "version": "1",
    "manifest_version": 2,
    "background": {
        "scripts": [
            "background.js"
        ]
    },
    "content_scripts": [
        {
            "matches": [
                "https://www.google.co.in/*"
            ],
            "js": [
                "myscript.js"
            ]
        }
    ],
    "permissions": [
        "https://www.google.co.in/*"
    ]
}

background.js

いくつかの簡単な関数と、関数の呼び出しをトリガーするためのリスナーが含まれています

//Some Trivial Function
function runme() {
    console.log("I am executed ... ");
}
//Listener fired when message is recieved
chrome.extension.onMessage.addListener(function (content) {
    if (content.message == "Hey i am from Google.co.in Page please run runme function") { // Check for correct message
        runme(); // Invoke function
    }
});

myscript.js

//Trigger background page through message passing
chrome.extension.sendMessage({
    message: "Hey i am from Google.co.in Page please run runme function" //Some message
});

出力

トリガーが呼び出されたときに実行されているバックグラウンド関数を確認できます。

参照

于 2013-02-19T07:10:32.433 に答える