0

現在、extension.js と background.js で構成されるクロスライダー アドオンがあります。

extension.js で、ユーザーが現在表示しているページに GET リクエストを送信します。この GET リクエストでは、いくつかのデータを収集しています。

ドメイン名 (プロトコル + ドメイン) をローカルの Crossrider データベースに保存しています。get リクエストごとに、リクエストされたドメインがデータベースに存在しないことを確認しています。データベースに見つかった場合は、要求が発生しないようにします (最適化のため)。

さて、問題は、ユーザーがタブを変更するたびに、ユーザーに表示されるブラウザーアドオンアイコンとデータ (browserAction Icon Label など) が、 現在のドメインに応じて変更されるようにすることです。タブ。

例えば:

タブ 1 - https://www.google.com タブ 2 - https://www.yahoo.com

ユーザーがタブ 1 を使用している場合、ブラウザー アドオンのアイコンと詳細がそれぞれその URL に変わります。タブ 2 に切り替えるとすぐに、現在の URL に応じて詳細が再び変更されます。ユーザーが同じタブで新しい Web サイトにアクセスした場合、ブラウザー アドオンの詳細は、ユーザーがアクセスした新しい URL に対応する必要があります。

どうもありがとう

4

1 に答える 1

1

あなたがうまく説明したように、あなたの要件についての私の理解は、次の Crossrider メソッドを使用してバックグラウンド スコープで対処できる 2 つのコンポーネントで構成されています。

  1. タブの変更を検出するには、appAPI.tabs.onTabSelectionChangedを使用します。
  2. URL の変更を監視するには、appAPI.webRequest.onBeforeNavigateを使用します

コードを簡素化するために、ボタンの更新に共通の関数を使用します。たとえば、background.jsファイルでは、コードは次のようになります。

appAPI.ready(function($) {
    // Monitor tab selection changes
    appAPI.tabs.onTabSelectionChanged(function(tabInfo) {
        // tabInfo.Id = Tab Id
        // tabInfo.tabUrl = URL in tab
        updateButton(tabInfo.tabUrl);
    });

    appAPI.webRequest.onBeforeNavigate.addListener(function(details, opaqueData) {
        // details.pageUrl = URL of the tab requesting the page
        // opaqueData = data passed to the context of the callback function
        updateButton(details.pageUrl);
    });

    function updateButton(url) {
        // Your code to update the button based on URL
    }
});

[開示:私はクロスライダーの従業員です]

于 2014-03-03T06:56:34.717 に答える