0

Chrome拡張機能の開発は初めてです。新しいタブが作成されるたびに通知を表示する拡張機能を作成しました。それは機能しますが、タブを開いてすぐに別のタブを開くと、最初のタブに対してのみ通知が表示されます。

Chrome拡張ドキュメントで、私はこれを読みました:

イベント ページが短時間 (数秒) アイドル状態になると、chrome.runtime.onSuspend イベントが送出されます。

どうやら、2番目のタブの通知がなかった理由を説明しています。数秒待たずに、すぐに (つまり、通知が表示されたら) イベント ページをアンロードできますか?

これは私のコードです:

マニフェスト.json

{
    "name": "test",
    "version": "1.0",
    "description": "notification test",
    "manifest_version": 2,
    "permissions": [ "tabs", "notifications" ],
    "background": { "scripts": ["background.js"], "persistent": false }
}

background.js

var notification = webkitNotifications.createNotification(
    '48.png',
    'hello',
    'this is a test'
);

chrome.tabs.onCreated.addListener(function(tab) {
    notification.show();
});
4

1 に答える 1

0

コード a)

マニフェスト.json

{
    "name": "test",
    "version": "1.0",
    "description": "notification test",
    "manifest_version": 2,
    "permissions": [ "tabs", "notifications" ],
    "background": { "scripts": ["background.js"], "persistent": false },
    "web_accessible_resources": [
    "48.png"
  ]
}

background.js

function notify(tab){
    console.log(tab);
    var notification = webkitNotifications.createNotification(
        '48.png',
        'hello',
        'this is a test'
    );
    notification.show();
}

chrome.tabs.onCreated.addListener(notify);

このソリューションでは、 https://code.google.com/p/chromium/issues/detail?id=162543により、新しいタブが初めて作成された場合/別のタブの直後に作成された場合に 2 つの通知が表示されます。しかし、ここでは、バックグラウンド ページではなくイベント ページが表示されます。

コード b)

イベント ページをバックグラウンド ページにすることで、必要な機能を実行できます。ただし、こだわりがある場合はイベントページを使用しないでください。

マニフェスト.json

{
    "name": "test",
    "version": "1.0",
    "description": "notification test",
    "manifest_version": 2,
    "permissions": [ "tabs", "notifications" ],
    "background": { "scripts": ["background.js"], "persistent": true },
    "web_accessible_resources": [
    "48.png"
  ]
}

background.js

function notify(tab){
    console.log(tab);
    var notification = webkitNotifications.createNotification(
        '48.png',
        'hello',
        'this is a test'
    );
    notification.show();
}

chrome.tabs.onCreated.addListener(notify);
于 2012-11-25T10:19:58.433 に答える