私は次のことを達成しようとしています。
ページAには、アクセスが制限されているページBへのリンクがあります。アクセス制限は、PHPのサーバー側で処理されます。
ユーザーがページBへのこのリンクをクリックすると、リンクのhref(B)をアクションとして持つフォームを使用して、ページAに(javascriptを介して)モーダルダイアログが表示されます。(ユーザーに即座にフィードバックを提供するため。フォールバックは、アクセスしたいサイトにリダイレクトするログインフォームにユーザーをリダイレクトすることです。)このシステムは非常にうまく機能します。
しかし、今私の質問が来ます:
新しいウィンドウで開く必要があるアクセス制限されたリンクがあります。
ここで、フォームでtarget = "_ blank"を使用すると、ユーザーは元のページ(A)でログアウトしたままになり、バックグラウンドで開いたままになります。
フォームが新しいウィンドウ(B)に送信された直後に、ページ(A、バックグラウンド)をリロードする方法はありますか?
私の最初のアイデアは、window.location.reload();を使用することでした。Aページの送信ハンドラーで。
これはChromeでは機能せず、私が理解していることから、競合状態が発生する可能性があります。
もう1つのアイデアは、ajax呼び出しを介してユーザーにログインし、javascriptを介して新しいウィンドウを開くことです。ポップアップブロッカーを処理せずにこれを行う方法はありますか?
少し追加して、lostsource(以下を参照)のアイデアを実装しました。
一度だけリロードする必要があるので、クッキーが変更された場合、setIntervalのタイマーを停止することができます。
var ri=setInterval(function() {
if(oldCookie != document.cookie) {
// assuming a login happened, reload page
clearInterval(ri);
window.location.reload();
}
},1000); // check every second
私はまだそのアイデアが大好きです。stackoverflowは素晴らしいです!