question

Pode detectar quando o botao de voltar do navegador e pressionado em Javascript?

Ele não precisa necessariamente estar com o Javascript. Eu só preciso ser capaz de colocá-lo em um arquivo HTML.
Enfim...
Estou atualizando um site dinamicamente com Javascript, e eu quero o navegador para desfazer a ação de Javascript anterior quando é pressionado o botão voltar. Se isso for possível, poderia você me dar o código, ou pelo menos um link para um bom recurso para algo parecido com isto?
resposta Resposta
Você pode usar o evento window.onbeforeunload para verificar que o usuário quer deixar a sua página. No entanto, você não pode dizer se eles estão deixando através de um link, através do botão de voltar de navegadores, ou digitar um novo endereço na barra de endereços.

Minha sugestão - tem um botão "desfazer" na sua página e use o evento onbeforeunload para informar os visitantes para usar esse botão para desfazer as alterações na página.

Aqui está um exemplo:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

<html lang='en'>

<head>

<meta http-equiv='Content-type' content='text/html;charset=UTF-8'>

<title>Pegar o botão voltar</title>

<script type="text/javascript">

var para = 0;

var paras = [

"<p>Paragraph One.<\/p>",

"<p>Paragraph Two.<\/p>",

"<p>Paragraph Three.<\/p>",

"<p>Paragraph Four.<\/p>",

"<p>Paragraph Five.<\/p>"

];

function showParas() {

var theParas = "";

for (var i = 0; para > i; i++) {

theParas += paras[i];

}

document.getElementById( "dynamic" ).innerHTML = theParas;

}

function addPara() {

if (para === 0) {

document.getElementById( "undo" ).disabled = "";

window.onbeforeunload = function(){ return 'To undo a change use the "Undo" button.';};

}

if (paras.length > para) {

para += 1;

}

if (paras.length == para) {

document.getElementById( "add" ).disabled = "disabled";

}

showParas();

}

function undoChange() {

if (para == paras.length) {

document.getElementById( "add" ).disabled = "";

}

para -= 1;

if (para === 0) {

document.getElementById( "undo" ).disabled = "disabled";

window.onbeforeunload = "";

}

showParas();

}

</script>

</head>

<body>

<h1>Pegar o botão voltar</h1>

<p>Esta página simula captura uso do botão de voltar do navegador.</p>

<p>Na verdade, ele captura qualquer tentativa de deixar nesta página.</p>

<form action="javascript:return false;">

<input type="submit" value="Add Paragraph" onclick="addPara();" id="add">

<input type="submit" value="Undo" onclick="undoChange();" id="undo" disabled="disabled">

</form>

<div id="dynamic"></div>

</body>

</html>

Comentários Comentários

Guest
Rafael na 29 Ago 2023
5
Sim, é possível detectar quando o botão de voltar do navegador é pressionado em Javascript. Você pode usar o evento "popstate" para fazer isso. O evento "popstate" é disparado quando a entrada do histórico é alterada, o que inclui quando o botão de voltar é pressionado.

Aqui estão os passos para detectar o botão de voltar pressionado em Javascript:

1. Adicione um ouvinte de eventos para o evento "popstate":
```
window.addEventListener('popstate', function(event) {
// faça algo quando o botão de voltar for pressionado
});
```

2. Dentro do manipulador de eventos "popstate", você pode desfazer a ação anterior que foi feita com Javascript.

3. Certifique-se de que o seu site esteja configurado corretamente para usar o histórico de navegação do navegador, como usar "pushState" para adicionar entradas ao histórico.

Ao usar o evento "popstate" e seguir os passos acima, você será capaz de detectar quando o botão de voltar do navegador é pressionado e desfazer a ação anterior feita com Javascript. Espero que isso ajude!

O seu comentário
Acho que a resposta não está correta ou que você gostaria de acrescentar mais
alguma informação? Envie o seu comentário abaixo..

Guest


HTML não é permitido!

Image Code

Digite os caracteres que aparecem na imagem por isso sabemos que você é humano!

Receber um email quando alguém acrescenta outro comentário a esta pergunta


Topo da página


Home  Terms
Copyright © Accelerated Ideas 2005-2024
All rights reserved