0

在 Chrome 中一切正常,但在 FF 中却不行。这是我的情况:

父页面有一个链接,点击它会创建一个带有文本字段的弹出窗口。该信息存储在$_SESSION其中并用于导航(即,“一”将您带到第一页,“二”将您带到第二页,等等)。在弹出窗口中,提交时会发生三件事:

  1. 文本字段信息存储在会话中。
  2. 父页面使用文本字段数据刷新以告诉它去哪里。
  3. 弹出窗口关闭。

请记住,这在 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\">";
} 
?>
4

0 回答 0