2

すでに開いている Web アプリケーションで特別な URL を処理するには、次のアプローチを使用します。

  1. ユーザーは電子メールで特別な URL を受け取ります (アラーム通知)
  2. URL は、セッション Cookie を一時的に設定する JavaScript コードを含む小さなヘルパー Web ページ (H) を開きます。
  3. すでに別のタブ/ウィンドウで開いているメイン Web アプリケーション (M) はこれを認識し、Cookieを削除した後に要求を処理します。
  4. ヘルパー Web ページ (H) はこれを成功として識別し、現在は役に立たないため、閉じる必要があります。

ヘルパー ウィンドウ (H) が開いたままになっていることを除いて、これはすべて正常に機能します。もちろん、「今すぐこのウィンドウを閉じてください」という小さなテキストがありますが、これを自動的に行うことができれば完璧です.

window.close() IE で確認ダイアログが表示され、FireFox はコマンドを無視します。これは、ウィンドウがを使用して開かれていないwindow.open()ためだと理解しています。

同様にwindow.focus()、メイン ウィンドウで呼び出しても何も起こりません。

とにかくこれを達成する方法を知っている人はいますか?少なくとも、ヘルパー ウィンドウを閉じずにメイン ウィンドウを自動的にフォーカスすることは、何もしないよりはましです。

もちろん、すでに開いている Web アプリケーションで電子メールのリンクを処理する他のソリューションについてもオープンです... :)

Web アプリケーション (およびもちろんヘルパー ページ) は HTTPS サーバー上にあることに注意してください。

4

1 に答える 1

0

一部のブラウザでは、(セキュリティ上の目的で)javascriptを介してウィンドウを開いた場合にのみ、javascriptを介してウィンドウをサイレントに閉じることができます。

このコードは、このセキュリティ対策を回避するためのハックです。

// open a new window, replacing the current one
window.open('', '_self', '');
// close the current window, which was now technically opened via javascript
window.close();

自己責任。これらの対策は、ページの訪問者に迷惑/悪意のあることを行わないようにするために実施されています。

于 2012-08-23T14:04:09.140 に答える