2016-06-22 18 views
0

ログインシステムに使用する必要があるポップアップウィンドウを作成するChrome拡張機能があります。拡張アイコンをクリックすると、そのアプリケーション(私の場合はAngularJS)が開きます。ユーザーはchrome.windows.create()というボタンをクリックしてポップアップを開きます。Chrome拡張機能から開いたポップアップウィンドウのURLを取得

私は、メインの拡張アプリケーションがそのポップアップのURLを監視して変更したいと考えています。

私は拡張子から、このようにポップアップを作成します。

chrome.windows.create(
    { 
     url: 'https://some.external.url.com/whatever', 
     type: 'panel', 
     width: 600, 
     height: 600 
    }, 
    function (windowReference) { 
     console.log('My Window:', windowReference); 
     // start monitoring URL of windowReference somehow 
     // could be as simple as a setInterval() loop 
    } 
) 

問題は、コールバックに渡さwindowReferenceオブジェクトがポップアップの現在のURLを持っていないことです。ユーザーはポップアップでページとやりとりすることができます(私はOAuth2システムを指しています)、URLは時々変更されます。私は、変更が行われたときに積極的に、または現在のURLを定期的に照会することで、それを確認したいと思います。

これはwindowReferenceオブジェクトが含まれているものです:

{ 
    alwaysOnTop:false, 
    focused:false, 
    height:600, 
    id:1089, 
    incognito:false, 
    left:61, 
    state:"normal", 
    top:23, 
    type:"popup", 
    width:600 
} 

あなたはIDがそこにあることがわかり、そして私には、私が他のいくつかのメソッドを呼び出すためにそれを使用することができるかもしれないことを示唆している、ということができます私が後にしている実際のURL情報を入手してください。

ご協力いただければ幸いです。

+0

ヒント:[chrome.tabs.query'](https://developer.chrome.com/extensions/tabs#method-query)と関連するイベント。 –

+0

@RobWはい、私はそれに精通しています。しかし、私はそれを使用するとき、拡張機能を開いたときに開いていたタブのURLを取得しています。拡張アプリケーション自体で作成されたポップアップウィンドウではなく、タブ内にはありません。 –

+1

あなたは 'windowId:windowReference.id'でそれを呼び出そうとしなかったと思いますか? –

答えて

0

したがって、答えはかなり簡単であることがわかりました。コメントにRob Wが記載されているので、他のタブと同様に検索を行うにはchrome.tabs.query()メソッドを使用します。

私にとって欠けている部分は、ポップアップがタブのクエリから必要な結果を得るために作成されたとき、あなたが取得するウィンドウの参照からidを使用することができるということでした。

chrome.tabs.query(
    { windowId: windowReference.id }, 
    function callback(tabs) { 
     var popup = tabs[0]; 
     $log.debug("Popup URL:", popup.url); 
    } 
); 

あなたは、私が渡されていることがわかりますIDは検索クエリオブジェクト内のwindowIdパラメータの値です。

関連する問題