Chrome ではすべて正常に動作しますが、FF では動作しません。これが私の状況です:
親ページにはリンクがあり、クリックするとテキスト フィールドのあるポップアップが作成されます。その情報は に保存され$_SESSION
、ナビゲートするために使用されます (つまり、「1」はページ 1 に移動し、「2」はページ 2 に移動します)。ポップアップでは、送信時に次の 3 つのことが起こります。
- テキストフィールド情報はセッションに保存されます。
- 親ページは、テキスト フィールド データを使用して更新され、移動先を伝えます。
- ポップアップが閉じます。
これはChromeで正常に機能していることに注意してください。ただし、FFでは、情報が親ウィンドウに送信される前にポップアップウィンドウを閉じているため、$_SESSION
データが失われていると思います。これは、ポップアップが閉じないようにすると正常に動作するため、ポップアップが親ウィンドウにデータを返さないというケースではないためだと思います。
そう...私の問題は、私の順序が正しいように見えても、JavaScriptが実行されている順序にあると思います。繰り返しますが、Chrome では問題なく機能します。
これが私のコードです。解決できますか?
(すべてのページ$_SESSION
にヘッダーなどがありますが、構文の問題ではありません)
$_SESSION
データが送信される前に Firefox がポップアップを閉じていると思います! どうしてか分かりません!navredirect.php
何が起こるかというと、空のセッションがなく、ブラウザが最終的にになります。を取得して$_SESSION data
いないため、PHP の if ステートメントは、メタ リダイレクトを実行するように指示しません。PRINT_R は何も生成しません。
親ページのポップアップ呼び出し:
<a href="javascript:void(0)" onClick="window.open('enternav.php', 'Pop Up', 'width=432,height=270,toolbar=0,scrollbars=0,screenX=200,screenY=200,left=200,top=200')">Go to Page</a>
ポップアップページのコード。(enternav.php)
<head>
<script type="text/javascript">
function proceed(){
opener.location.reload(true);
window.opener.location.href='http://www.page.com/navredirect.php';
self.close();
}
</script>
</head>
<body>
<form method="post" onsubmit="proceed()" action="logscript.php">
<input type = "text" name="page" />
<input type ="submit" value="Go to page" />
</form>
</body>
logscript.php のコード (テキスト フィールドをセッション データに変換)
<? $_SESSION['pw'] = $_POST['page']; ?>
navredirect.php のコード (
<?
if($_SESSION['pw'] == "one") {
echo "<meta http-equiv=\"refresh\" content=\"0;URL=pwone.php\">";
}
elseif($_SESSION['pw'] == "two") {
echo "<meta http-equiv=\"refresh\" content=\"0;URL=pwtwo.php\">";
}
else {
echo "<meta http-equiv=\"refresh\" content=\"0;URL=wrongpw.php\">";
}
?>