一連のブックマークを保持する 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 を返します。
}
);