2010-12-08 25 views
7

基本的には、パッケージ化されたWebアプリケーションがあります。このWebアプリケーションは、Webアプリケーションの他のインスタンスが開いているかどうかを確認したい場合にチェックします。そうであれば、開いているインスタンスに切り替える別のものを作成する。特定のページが既にGoogle Chromeで開いているかどうかを確認するにはどうすればよいですか?

また、オプションページについては、アプリケーションが開いているかどうかを確認したい場合は、オプションページが変更されている場合はアプリケーションページを更新してください。

私はchrome.tabs JavaScriptモジュールについてdocumentationを読んできましたが、この機能を特定のタブに表示する方法を考えることができません。特定のタブのタブIDを探したり設定したりする方法がわかりません。私はこれが私が望むことをする方法だと思うが、間違った木を吠えているなら私に知らせてください。

ここの誰かが私にとってそれをより良く説明できるなら、私は最も感謝しています。この機能を有するGoogle Mail Checker拡張、内部

答えて

7

ルック:特に

function goToInbox() { 
    chrome.tabs.getAllInWindow(undefined, function(tabs) { 
    for (var i = 0, tab; tab = tabs[i]; i++) { 
     if (tab.url && isGmailUrl(tab.url)) { 
     chrome.tabs.update(tab.id, {selected: true}); 
     return; 
     } 
    } 
    chrome.tabs.create({url: getGmailUrl()}); 
    }); 
} 

は、getAllInWindow WINDOWID(または現在のウィンドウのための未定義)とタブオブジェクトの配列を受け付ける機能を渡します。タブのプロパティは直接変更しないでください。むしろ、そのIDを操作するためにそのIDを更新関数に渡します。

+0

+1完璧な例 – Kranu

+1

タブを完全に選択するようです!質問:Google Mail Checker拡張機能のようにブラウザに切り替えるのではなく、指定したタブを更新するようブラウザに指示するにはどうすればよいですか?そして、すべてのウィンドウをチェックするgetAllInWindowに似た何かがありますか? –

+0

ほとんど変更はありませんが、完全に動作します! :-) –

3

バージョン2マニフェストを使用してジョシュ・リーの答えの仕事を作るために、あなたはmanifest.jsonをファイル内のタブに権限を追加する必要があります。

... 
"permissions": [ 
    "tabs" 
] 
... 

私はこの種の構造は、「セキュリティ」を追加しますか見当もつかないウェブに...

1

初心者に役立つことを願っています!

#ジョシュリーの答えに加えて。

function openMyTab(mURL) {   

    if(!mURL){ 
     console.log("No url passed"); 
     return; 
    } 
    chrome.tabs.getAllInWindow(undefined, function(tabs) { 
    for (var i = 0;i<tabs.length; i++) { 

// remove (tabs[i].url.indexOf(mURL)!=-1) and 
// use tabs[i].url===url if you want exact match below 

     if (tabs[i].url && (tabs[i].url.indexOf(mURL)!=-1)) { 

     console.log("URL Match found",tabs[i].url); 

     chrome.tabs.update(tabs[i].id, {url:url,selected: true}); 

     return; 
     } 
    } 
    console.log("URL not found. Creating new tab"); 

    chrome.tabs.create({url: url}); 
    }); 
0

上記の例を使用することを計画しているユーザーの場合、Chrome 33以降は[選択済み]オプションは廃止されましたが、代わりに[ハイライト表示]オプションを使用してください。

関連する問題