0

ポップアップでonclickに表示されるGoogle Chrome拡張機能があります。現在/アクティブなタブの URL を必要とするいくつかのオプションを含むコンテキスト メニューがあります。拡張機能には、次のような問題があります。

古いコード:

function menuCallback(info, tab) {

var currentUrl = tab.url;

古いコードの場合: ポップアップ内で右クリックすると、返される現在の URL は "chrome-extension..." などです。

新しいコード: (私は問題を修正しようとしました)

chrome.tabs.query({'active': true, 'windowId': chrome.windows.WINDOW_ID_CURRENT},
    function(tabs){
        currentUrl = tabs[0].url;
    }
);

クリックがポップアップ内から発生した場合でも、タブの URL を返すため、これは機能します。しかし、開いているタブが 10 個ほどあり、2 つのタブを切り替えると、常に古いタブが返されます。たとえば、最初に google.de にいる場合、返される URL は google.de です。「heise.de」などの既に開いているタブに切り替えて右クリックすると、まだ google.de のままです。次の試行 / URL が正しいことを試行してください。

4

3 に答える 3

1

onUpdatedおそらくリスナーを使用したいと思うでしょう。

chrome.tabs.onUpdated.addListener(doSomething);

これにより、tabId、changeInfo、およびタブのメタデータが得られます。その後、好きなようにできます:

var doSomething = function (tabId, changeInfo, tab) {
  var match = /http:\/\/www.google.com/.exec(tab.url);
  if(match && changeInfo.status == 'complete') {
       ... do something ...
  } 
}

編集:あなたの質問をもう一度読んだ後、おそらく必要なのはonHighlighted イベントリスナーです。タブを選択するとすぐにtabsIdsとの配列を持つオブジェクトを返します。window

chrome.tabs.onHighlighted.addListener(function(o) { tabId = o.tabIds[0]; })

getその後、その特定のタブに関する詳細情報を取得するために使用できます。

chrome.tabs.get(tabId, function(tab) { ... })

onUpdatedページが変更されるたびに誰かがタブ情報を必要とする場合に備えて、コードを残しておきます。

于 2013-01-14T13:34:21.620 に答える
-1
chrome.tabs.getSelected(null, function(tab) {
    var currentURL= tab.url;
    alert(currentURL); // this should give you current url.
}
于 2013-01-15T05:44:48.310 に答える