使用window.location.replace但页面仍在浏览器的内存中

时间:2015-01-03 14:51:26

标签: javascript jquery window.location

我在redirect.php页面中有这段代码:

<script>
$(window).load(function() {
var secs = 5, display = $('#time');
setInterval(function() {
    display.text('    ' + secs);
    if (secs > 0){
    secs--;
    }
}, 1000);
window.redirectTimeout = setTimeout(function(){ 
    window.location.replace("<?php echo $post_url ?>");
}, 500);

$('#cancelBtn').on('click', function(){
    clearTimeout(window.redirectTimeout);
    $('#time').hide();
});
});
</script>

我正在使用

window.location.replace

因为我希望当用户从页面重新定向回来时跳过此页面,但仍然按下后,此redirect.php页面会再次加载和重定向。

知道为什么

window.location.replace

在这里不起作用或如何在后退时跳过此重定向页面?

由于

2 个答案:

答案 0 :(得分:1)

您需要查看使用replaceState等历史记录操作功能,请查看此处的文档https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Manipulating_the_browser_history

然后,您需要在更改history.replaceState对象

之前进行window.location调用

答案 1 :(得分:0)

好的,感谢A. Wolff和unobf我得到了它: 在之前的redirect.php页面中

window.location.replace("<?php echo $post_url ?>");

我添加了这一行:

window.history.replaceState( {} , 'YYY', 'XXX.php' ); 

其中XXX.php是跳过redirect.php后我想让用户登陆的页面。 YYY是页面的标题。 此功能修改了浏览器的历史记录,因此当用户按下时,它将转到的页面不是实际的上一页,而是我在window.history.replaceState中定义的页面。

现在,我获取了用户获取redirect.php的页面URL和标题(我用_GET或_SESSION执行)并回显它而不是YYY和XXX.php所以当用户返回时它会去到它点击链接的页面,该链接将其带到redirect.php并从那里到达目标。

这是最终的代码。谢谢大家。

<script>
$(window).load(function() {
var secs = 5, display = $('#time');
setInterval(function() {
    display.text('    ' + secs);
    if (secs > 0){
    secs--;
    }
}, 1000);
window.redirectTimeout = setTimeout(function(){
    window.history.replaceState( {} , '<?php echo $srcTitle ?>', '<?php echo $srcUrl ?>' );
    window.location.replace("<?php echo $post_url ?>");
}, 500);

$('#cancelBtn').on('click', function(){
    clearTimeout(window.redirectTimeout);
    $('#time').hide();
});
});
</script>
相关问题