在 Chrome 中一切正常,但在 FF 中却不行。这是我的情况:
父页面有一个链接,点击它会创建一个带有文本字段的弹出窗口。该信息存储在$_SESSION
其中并用于导航(即,“一”将您带到第一页,“二”将您带到第二页,等等)。在弹出窗口中,提交时会发生三件事:
- 文本字段信息存储在会话中。
- 父页面使用文本字段数据刷新以告诉它去哪里。
- 弹出窗口关闭。
请记住,这在 Chrome 中运行良好。但是,在 FF 中,我相信它会在信息发送到父窗口之前关闭弹出窗口,从而丢失$_SESSION
数据。我相信这一点,因为如果我这样做,弹出窗口不会关闭,它工作正常,所以这不是弹出窗口不将数据发送回父窗口的情况。
所以...我认为我的问题在于我的 JavaScript 的执行顺序,即使我的顺序看起来是正确的。再一次,它在 Chrome 中运行得很好。
这是我的代码,你能解决吗?
(所有页面都有$_SESSION
标题等,这不是语法问题)
我相信 Firefox 在发送数据之前会关闭弹出窗口$_SESSION
!我不知道为什么!发生的情况是我的浏览器最终进入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\">";
}
?>