如何防止默认并覆盖浏览器的后退按钮行为?

时间:2015-05-18 10:24:51

标签: javascript

很抱歉,如果重复,但我不明白如何在我的情况下使用基本方法。 当用户在浏览器中按下按钮时,我需要隐藏一些div。这就是我所需要的。不得重新加载页面。我试过这种方式:

window.onpopstate = function (event) {
    event.preventDefault();
    alert("Back button pressed");
    myDiv.style.display = 'none';
}

但这根本不起作用。即使警报也不会发射。浏览器一如既往地回归。

如何让它发挥作用?首先,这必须适用于移动浏览器。 是否会使用window.location.hash触发页面重新加载?

2 个答案:

答案 0 :(得分:4)

简短回答:你无法改变它。

答案很长:

您应首先设置State然后使用事件处理程序获取它。

因此,简单地说,当用户点击文档的特定部分(例如<a>)时,您设置了State,然后当他点击(浏览器的)后退按钮时,您需要设置someElement.addEventListener( 'click', function( e ) { history.pushState({ state: 'someElement was clicked' }, 'title', 'some-element.html' ); }) 。我被解雇了。

if (($gestor = fopen("files/prueba.pim", "c+")) !== FALSE) {
    while (($datos = fgetcsv($gestor, 1000, "<br>")) !== FALSE) {
        $numero = count($datos);
        for ($c=0; $c < $numero; $c++) {
            if ("G81"==substr($datos[$c], 0, 3)){
                fwrite($gestor, "COMIENZO DE CICLO".PHP_EOL);
            }else {
           if (";"!=substr($datos[$c], 0, 1))  echo utf8_encode($datos[$c]."\n");
            if ("X"==substr($datos[$c], 0, 1) or "Y"==substr($datos[$c], 0, 1))
                fwrite($gestor, "TEST".PHP_EOL);
        }
    }
    }
    fclose($gestor);
}

现在,当按下后退按钮时,您已收到警报(如问题中所示)。

有关更新信息,请点击此处:Manipulating the browser history( mdn )

答案 1 :(得分:1)

不,更改位置哈希不会执行页面重新加载(这是所有单页面应用程序所基于的位置。

单击后退按钮(这将触发页面重新加载)后防止行为不是一个真正的选择。你能做的最好就是警告用户:

window.onbeforeunload = function() { 
    return 'Sure you want to leave?';
};