很抱歉,如果重复,但我不明白如何在我的情况下使用基本方法。 当用户在浏览器中按下按钮时,我需要隐藏一些div。这就是我所需要的。不得重新加载页面。我试过这种方式:
window.onpopstate = function (event) {
event.preventDefault();
alert("Back button pressed");
myDiv.style.display = 'none';
}
但这根本不起作用。即使警报也不会发射。浏览器一如既往地回归。
如何让它发挥作用?首先,这必须适用于移动浏览器。
是否会使用window.location.hash
触发页面重新加载?
答案 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?';
};