从iframe内部返回的页面数可变

时间:2018-07-19 18:56:56

标签: javascript php html iframe

我有一个页面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' />"; ?> 的脚本标签被打印在页面上,它确实以正确的返回次数被打印。它根本不起作用。当我单击“后退”按钮时,我会感到奇怪。有时浏览器什么也不做。有时它可以追溯到过去,但并非一直如此。我不明白 其他一些细节:

  1. 只有设置了goBack后,行为才能开始。如果用户只是进入iframe并决定不提交表单就返回。一切正常。
  2. 我尝试修改$_POST['noOfReloads']的定义以排除goBack()变量,然后简单地返回固定的次数:-1,-2,-3,-4 ...然后可以,但是不能在那里使用该变量。
  3. 假设用户提交了$noOfRealods次表单,以便n执行goBack。即使我直接输入控制台window.history.go(-1-n),也不会一直返回。

有人可以帮助我吗?

0 个答案:

没有答案