4

https://developer.chrome.com/extensions/pageAction.html#event-onClickedから:

chrome.pageAction.onClicked.addListener(function(tabs.Tab tab) {...});

ページ アクション アイコンがクリックされたときに発生します。ページ アクションにポップアップがある場合、このイベントは発生しません。

では、ポップアップを使用している場合、ページ アクションがクリックされたときはどうすればわかりますか?

4

1 に答える 1

7

ポップアップが設定されている場合、ボタンをクリックすると、ポップアップ ページがロードされて表示されます。同時に、onClickedイベントはトリガーされません。したがって、ポップアップが設定されているときにクリックを検出する場合は、popup.js にコードを記述します。

例: ポップアップのないコードが次のようになっている場合:

// background/event page
chrome.pageAction.onClicked.addListener(function(tab) {
    // Do something
});

次に、背景/イベントページからそのコードを削除し、popup.js にコードを配置します。

document.addEventListener('DOMContentLoaded', function() {
    // Do something, e.g. send a message to content or background script
});

バックグラウンド ページにロジックを保持することが重要な場合 (たとえば、http 要求やデータベース アクセスなどを開始する場合)、メッセージ パッシングを使用して、ボタンがクリックされていることをバックグラウンド ページに通知します。

// popup.js
chrome.runtime.sendMessage('pageActionClicked');

// background.js
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
    if (message === 'pageActionClicked') {
        // Do something
    }
});

現在のタブ (イベントのtab引数など) を知る必要がある場合は、次を使用します。pageAction.onClickedchrome.tabs.query

// Inside the DOMContentLoaded or onMessage event listener:
chrome.tabs.query({
    active: true,
    lastFocusedWindow: true
}, function(tabs) {
    var tab = tabs[0];
    // Do something with tab
});
于 2013-07-19T08:58:29.957 に答える