1

1つのWebサイトにpageActionを定義する方法はありますか?私はサンプルを見ました、そしてそれらの両方はそのファイルでbackground.js示すために使用しchrome.pageAction.show(tabId)ます。

4

1 に答える 1

1

特定のWebサイトのpageActionを表示するには、2つの方法があります。

コンテンツスクリプトの使用

特定のWebサイトでコンテンツスクリプトを実行し、ページアクションを要求するメッセージをバックグラウンドに渡します。

// contentscript.js
chrome.extension.sendMessage('showPageAction');
// background.js
chrome.extension.onMessage.addListener(function(message, sender) {
    if (message == 'showPageAction') {
        chrome.pageAction.show(sender.tab.id);
    }
});

の一部manifest.json

"content_scripts": [{
    "js": ["contentscript.js"],
    "run_at": "document_start",
    "matches": ["http://example.com/"]
}]

の有効な値matchesは、ドキュメントの一致パターンで正確に定義されています。
この例の一致パターンは一致しhttp://example.com/、ではないことに注意してくださいhttp://example.com/index.html。ウェブサイト上の何かと一致させたい場合は、http://example.com/*(アスタリスクを付けて)を使用してください。

chrome.tabsAPIの使用

コンテンツスクリプトを使用したくない場合は、chrome.tabsイベントを使用してページアクションを表示できます。

// background.js
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
    if (changeInfo.url == 'http://example.com/') {
        chrome.pageAction.show(tabId);
    }
});

chrome.tabsすでにAPIを使用している場合を除き、コンテンツスクリプトメソッドをお勧めします。なんで?マニフェストファイルでアクセス許可を要求する"tabs"と、インストール時にユーザーに次の警告が表示されます。

インストールします<name of your extension>か?
  アクセスできます:
タブとブラウジングアクティビティにアクセスします

于 2012-12-15T21:03:47.227 に答える