2012-11-13 11 views
23

私はChrome拡張機能を作成しています。その一部には、ポップアップページのボタンをクリックすると現在のタブのタイトルとURLを取得する必要があります。Chrome拡張機能:現在のタブをポップアップから取得する

私は以前Chromeのメッセージパッシングシステムを使用していましたが、多くの努力を払って、多くの場合、それを動作させることができました。しかし、私はポップアップ・ページでそれらを使用する必要はありませんでした。私が読んだことから、それははるかに難しいです。

  1. popup.html/popup.js

    私がこれまでに把握するために管理してきたタイムラインはこれです   リクエスト/メッセージは、コンテンツに送信されます。   ボタンが

  2. popup.html/popup.jsをクリックしますスクリプト
  3. contentScript.js:                         タイトルと現在のタブのURLを変数
  4. contentScript.jsに格納されています:             リクエスト/メッセージがポップアップページ
  5. contentScript.jsから受信されます        2つの変数は、ストリング化された応答として送信されます
  6. popup.html/popup.js:    2つの変数は通常、私はこれを把握することができるだろう応答

から解析されますが、私は作品にスパナを投げてきたいくつかのことを読みました例えば:

  • chrome.tabs.getSelectedは、バックグラウンドページ/スクリプトでのみ使用できます。これは、コンテンツスクリプトをまったく使用する必要がないことを意味しますか?
  • コンテンツスクリプトからポップアップページに直接メッセージを送信することはできません。背景ページを経由する必要があります。
  • メッセージを渡す前にポップアップウィンドウを確認する必要があります私はこれを行う方法を知っています)

私はすでにクロムのメッセージパッシングシステムを見つけましたが、これは私を完全に混乱させました。したがって、この投稿。

答えて

-4

気にしないでください。

実際には、chrome.tabs.getSelectedをポップアップウィンドウから直接使用することができます。誰かが嘘をついた。 ¬¬

+1

'クローム:クエリだけでは現在のタブを含むタブの配列を返しますので

var query = { active: true, currentWindow: true }; 

、コールバックで

function callback(tabs) { var currentTab = tabs[0]; // there will be only one in this array console.log(currentTab); // also has properties like currentTab.id } 

のEtほらを最初の要素を取るようにしてください。 tabs.getSelected'は、 'chrome.tabs.query'のために推奨されなくなりました(ドキュメントにもリストされていません)。ポップアップページで 'chrome.tabs.query'が動作するかどうかはわかりません。 – Stan

+0

使い方についてご意見はありますか? – mythofechelon

+1

サポートされるまで 'getSelected'を続けることができます。特に' query'が動作するかどうかテストします。特にマニフェストバージョン2(バージョン1は来年中止予定)で動作します。最後の手段として、あなたの背景ページで 'onCreated'、' onActivated'のクロムタブを聴いたり、アクティブなタブを変数に保存したり、 'getCurrentTab'というメソッドで返すことができます。それは 'chrome.extension.getBackgroundPage()。getCurrentTab()'です。 – Stan

50

chrome.tabs.getSelectedは推奨されていません。代わりにchrome.tabs.queryを使用してください。

chrome.tabs.queryには、クエリオブジェクトと結果のタブの配列をパラメータとして受け取るコールバック関数という2つのパラメータが必要です。

現在アクティブな現在のウィンドウにあるすべてのタブを照会することによって、「現在のタブ」を取得できます。

chrome.tabs.query(query, callback); 
+0

これは受け入れられた答えであるべきである – andrhamm

+0

このヒントをありがとう...私はポップアップウィンドウのURLを得ることに苦労していた。 timeOutを設定しなければならなかった...ページがロードされているときにtimeOutをたくさん使用していて、ページ情報を取得しようとしています。 – denikov

+0

あなたは、あなたが「権限」 'manifest.jsonを、すなわち内のURL許可含まれている必要がありcurrentTab.urlプロパティを使用する場合:[「タブ」、...]' –

関連する問題