一連のブックマークを保持する Chrome (パッケージ化) アプリを開発しています。これは、独自の小さなウィンドウで開きます。ブックマークをクリックすると、ターゲットが「_blank」に設定されたリンクを使用してブラウザで開きます。
Mac OS X では、これらは Safari で開きます。とにかくChromeで開くことはできますか?
一連のブックマークを保持する Chrome (パッケージ化) アプリを開発しています。これは、独自の小さなウィンドウで開きます。ブックマークをクリックすると、ターゲットが「_blank」に設定されたリンクを使用してブラウザで開きます。
Mac OS X では、これらは Safari で開きます。とにかくChromeで開くことはできますか?
パッケージ化されたアプリで target="_blank" を含むリンクをクリックすると、Chrome はデフォルト ブラウザーの選択を尊重し、必ずしも Chrome ではなく、それが何であれ外部でリンクを開きます。あなたの場合、デフォルトのシステム ブラウザは Safari でなければなりません。
Chrome でそのようなリンクを開く簡単な方法は、Chrome を既定のブラウザーにすることです。
それをしたくないが、何らかの理由で特に Chrome の新しいタブでリンクを開くことを主張する場合は、これを実現する 1 つの (おそらく唯一の) 方法があります。
アプリでは、onclick ハンドラーをすべてのリンクにアタッチし、chrome.runtime.sendMessage() を使用してリクエストを拡張機能に送信し、リンクの URL を開きます (これを行うには、拡張機能の ID を見つけて、ここで説明されているように、マニフェストに焼き付けます: http://developer.chrome.com/apps/manifest/key.html ):
変数リンク = ...; link.addEventListener('クリック', function(e) { e.stopPropagation(); e.preventDefault(); chrome.runtime.sendMessage( yourExtensionId, { url: link.href }, function(response) {} ); };
拡張機能で、chrome.runtime.onMessageExternal(data) ハンドラーを定義し (アプリからの sendMessage() リクエストをインターセプトします)、そこで chrome.tabs.create() を使用して新しいタブを開きます。
chrome.runtime.onMessageExternal.addListener( 関数 (リクエスト、送信者、sendResponse) { // |sender| であることを確認することを忘れないでください。ここにアプリがありますか。 chrome.tabs.create({ url: request.url }, function() { // タブが開いたときにアプリに通知する必要がある場合: sendResponse(真); }); // 'true' は、応答が非同期で送信されることを意味します。 true を返します。 } );