0

各タブが特定のサブアプリケーションを表すタブを持つアプリケーションがあります。

site.com/*既存のブラウザタブで開くなどのすべてのリンクを作成し、新しいリンクが受信/開かれたという JavaScript イベントを発生させて、代わりにアプリケーションで開くことができるようにしたいと考えています。

基本的に、私は Web アプリケーションを構築しています。アプリケーションの複数のインスタンスを作成するのではなく、同じアプリケーション インスタンスでリンクを開くようにしたいと考えています。

これは可能ですか?

更新:誰かが Skype または電子メールでリンクを送信した場合、そのリンクが私のアプリケーションで開くということです。私はほとんどの Web テクノロジを認識していますが、どのアプローチも考えられません。そのため、誰かがアイデアを持っている場合はこの質問を残しました。またはプラグイン、そうでない場合は、いつか取得する可能性があり、自分の回答を追加/質問を更新します。

4

1 に答える 1

1

はい。targetリンクの属性を使用して、サブアプリケーションのブラウジング コンテキスト (つまり、タブ、ウィンドウ) でリンクを開くだけです。

リンクを開くときに発生するイベントはありません。すべてのリンクにクリック イベント ハンドラーを追加して、URL が一致したときに必要な処理を実行することができます。


Web アプリケーションで特定のプロトコルまたは MIME タイプを開きたい場合は、HTML5 を使用することも可能です。window.navigator.registerProtocolHandler()とを使用できますwindow.navigator.registerContentHandler()カスタム スキームとコンテンツ ハンドラに関する HTML5 ドラフトを参照してください。

ユーザーが電子メールなどで受け取ったリンクの新しいタブ/ウィンドウを開いた場合、通常、それをキャッチして防止することはできません。ただし、クロス ドキュメント メッセージングを使用して、たとえばwindow.postMessage、アプリがブラウザーのどこかで既に開いているかどうかを確認し、1 つのタブを閉じて別のタブにフォーカスすることができます。

于 2012-05-21T09:38:46.123 に答える