我有一个页面mypage.php
作为iframe从index.php
加载。为了从这个iframe中恢复过来,起初我有类似的东西
<button onclick='javascript:window.history.back()'>Go back</button>
但这还不够,因为在mypage.php
中,用户可以执行触发页面重新加载的操作(例如使用action='mypage.php'
提交表单)。因此,例如,如果我进入iframe,提交此表单,然后单击“返回”按钮,则返回到mypage.php
的上一个迭代,而实际上我想一直返回到{{1 }}。
我的解决方案是通过每次提交表单时在超全局范围中增加一个变量来跟踪我们需要返回的次数;如下:
首先
index.php
然后,“返回”按钮已更新为
<?php
$noOfReloads = (isset($_POST['noOfReloads'])) ? $_POST['noOfReloads'] : 0;
echo "<script type='text/javascript'>",
"function goBack() { window.history.go(-1-$noOfReloads); }",
"</script>";
?>
并添加到可以提交的表单中
<button onclick='javascript:goBack()'>Go back</button>
就是这样。
但是它不起作用。我不知道为什么。我可以看到定义<?php
$newNoOfReloads = $noOfReloads + 1;
echo "<input type='hidden' name='noOfReloads' value='$newNoOfReloads' />";
?>
的脚本标签被打印在页面上,它确实以正确的返回次数被打印。它根本不起作用。当我单击“后退”按钮时,我会感到奇怪。有时浏览器什么也不做。有时它可以追溯到过去,但并非一直如此。我不明白
其他一些细节:
goBack
后,行为才能开始。如果用户只是进入iframe并决定不提交表单就返回。一切正常。$_POST['noOfReloads']
的定义以排除goBack()
变量,然后简单地返回固定的次数:-1,-2,-3,-4 ...然后可以,但是不能在那里使用该变量。$noOfRealods
次表单,以便n
执行goBack
。即使我直接输入控制台window.history.go(-1-n)
,也不会一直返回。有人可以帮助我吗?