Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Hugo Borges_120734

scrip de confirmação de saída da pagina

Recommended Posts

Galera eu utilizo hum scrip para verificar se o susuário vai sair da página, se for ele manda uma mensagem. segue código:

 <script language="JavaScript">
  window.onbeforeunload = confirmExit;
  function confirmExit()
  {
    return "Volte sempre";
  }
 </script>

Bom ele exibe uma alert onde o usuário clica em ok e o site fecha.

Queria saber como posso fazer para quando ele clicar em ok, alem se fechar o site apagar o cookie login.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite, Hugo.

Para trabalhar com cookie em JavaScript temos o:

document.cookie

Mas ele é bem limitado. Sendo assim, eu recomendo você utilizar o docCookie que tem alguns métodos bacanudos como:

docCookie.setItem(chave, valor);
docCookie.getItem(chave); //Retorna o valor do cookie ou null
docCookie.removeItem(chave); //Retorna true ou false

Para usar o docCookie você tem que adicionar o objeto docCookie em seu projeto:

/*\
|*|
|*|  :: cookies.js ::
|*|
|*|  A complete cookies reader/writer framework with full unicode support.
|*|
|*|  Revision #1 - September 4, 2014
|*|
|*|  https://developer.mozilla.org/en-US/docs/Web/API/document.cookie
|*|  https://developer.mozilla.org/User:fusionchess
|*|
|*|  This framework is released under the GNU Public License, version 3 or later.
|*|  http://www.gnu.org/licenses/gpl-3.0-standalone.html
|*|
|*|  Syntaxes:
|*|
|*|  * docCookies.setItem(name, value[, end[, path[, domain[, secure]]]])
|*|  * docCookies.getItem(name)
|*|  * docCookies.removeItem(name[, path[, domain]])
|*|  * docCookies.hasItem(name)
|*|  * docCookies.keys()
|*|
\*/

var docCookies = {
  getItem: function (sKey) {
    if (!sKey) { return null; }
    return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null;
  },
  setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) {
    if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return false; }
    var sExpires = "";
    if (vEnd) {
      switch (vEnd.constructor) {
        case Number:
          sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd;
          break;
        case String:
          sExpires = "; expires=" + vEnd;
          break;
        case Date:
          sExpires = "; expires=" + vEnd.toUTCString();
          break;
      }
    }
    document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "") + (bSecure ? "; secure" : "");
    return true;
  },
  removeItem: function (sKey, sPath, sDomain) {
    if (!this.hasItem(sKey)) { return false; }
    document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "");
    return true;
  },
  hasItem: function (sKey) {
    if (!sKey) { return false; }
    return (new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie);
  },
  keys: function () {
    var aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/);
    for (var nLen = aKeys.length, nIdx = 0; nIdx < nLen; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); }
    return aKeys;
  }
};

Qualquer dúvida só falar.

 

[]'s

Marco Bruno.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vc vai precisar do evento onunload

 

Porém, note que outras janelas como 'alert', 'prompt' e 'confirm' são bloqueadas nos eventos onunload e onbeforeunload.

NS_ERROR_NOT_AVAILABLE:

 

alert('saiu!');

Sete o teu console para "Persistente", e você só verá a mensagem do onunload caso o use opte por "sair". Teste com F5 a saída.

 

 

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>

<script>
window.addEventListener('beforeunload', function(event) {
  event.preventDefault();
  (event || window.event).returnValue = 'Quer sair?'
  return 'Quer sair?';
});

window.addEventListener('unload', function(event) {
  console.log('você só verá esse console, se o user sair da página');
});
</script>

</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom pelo o que eu entendi se o usuário cliquer para sair da pagina ele manda um alerta assim :

 

Tem certeza de que deseja sair desta página?

Quer sair?
E se o usuário confirmar ele vai mandar outro alerta assim:
você só verá esse console, se o user sair da página
E isso? Pois qui não deu certo. eu clico em sair e confirmo e não aparece nada.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é alerta, é console. Eu expliquei acima que alert, prompt e confirm são bloqueados nesses eventos. Leia novamente o meu post.

 

Aperte Ctrl + Shift + J no Firefox ou Chrome, sete para persistente, e ai você verá a mensagem no console.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tentou utilizar a sugestão que foi dada acima?

 

window.addEventListener('unload', function(event) {
  docCookie.removeItem('login');
});
?

 

Mas ai entra em contradição o uso do cookie. Se você quer que o cookie só exista enquanto o site está aberto, você não precisa apagar ele.

Só precisa setar ele para cookie de sessão, não permanente. Entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Atende ao que você pediu, certo ?

 

https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie

;expires=date-in-GMTString-format If not specified it will expire at the end of session.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.