Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá pessoal,
Estava tentando fazer com que quando o usuario entrasse no site abrisse um popup e o conteudo do site ficasse escondido até que o usuario clicasse em "sim" então o popup fecharia e apareceria o conteudo do site.
Porém existe um pequeno problema, se eu fizer isto sempre que eu retornar à página principal ele vai abrir o popup, o que posso fazer para isso não ocorrer?
Grato.
Incrementando...
Deixa o body com o display: none;
Podes criar um confirm()
dai a pessoa lê o texto
Se ela clicar no sim...
muda o display para '';
Se ela clicar no não podes fechar a página ou redirecionar;Mas como eu posso fazer essa comunicação, ja que se tratam de duas janelas diferentes?
Pessoal resolvi fazer tudo em uma página só e mudando o valor do "style.display", andei lendo muito sobre cookies e resolvi utilizar para quando o usuario der um refresh não aparecer denovo a mensagem.
Mas não estou conseguindo manipular os cookies corretamente.
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="" />
<title>Teste</title>
<script language="javascript" src="script.js"></script>
<style>
#escondido{
display: none;
}
#guri{
display: none;
}
</style>
</head>
<body>
<div id="popup">
<a href="#" onclick="entra();">Sim</a>
<a href="[http://www.google.com.br">Nao](http://www.google.com.br)
</div>
<div id="escondido"></div>
</body>
</html>
script.js
function gravaCookie(nome, value, horas){
var expire = "";
if(horas != null){
expire = new Date((new Date()).getTime() + horas * 3600000);
expire = "; expires=" + expire.toGMTString();
}
document.cookie = nome + "=" + escape(value) + expire;
}
function lerCookie(nome)
{
var valorCookie = "";
var search = nome + "=";
if(document.cookie.length > 0) {
offset = document.cookie.indexOf(search);
if (offset != -1){
offset += search.length;
end = document.cookie.indexOf(";", offset);
if (end == -1) end = document.cookie.length;
valorCookie = unescape(document.cookie.substring(offset, end))
}
}
return valorCookie;
}
if(acesso){
document.getElementById("escondido").style.display="block";
document.getElementById("popup").style.display="none";
}
var acesso = lerCookie("acessar");
function entra() {
document.getElementById("escondido").style.display="block";
document.getElementById("popup").style.display="none";
gravaCookie("acessar","159",1);
}
Galera,
Como ninguem respondeu eu continuei pesquisando, encontrei um algoritimo que gostei muito para utilizar cookies.
Consegui criar o cookie e consegui ler a partir de um "alert();" mas ele não funciona com o proposito desejado.
Vou postar os códigos do index e do javascript.
index.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="" />
<title>Teste</title>
<script language="javascript" src="script.js"></script>
<style>
#escondido{
display: none;
}
</style>
</head>
<body>
<div id="popup">
<a href="#" onclick="entra();">Sim</a>
<a href="[http://www.google.com.br">Nao](http://www.google.com.br)
</div>
<div id="escondido"></div>
</body>
</html>
script.js
var w3cookies = {
date: new Date(),
// Cria o(s) cookie(s)
// Forma de uso: w3cookies.create(’nome_do_cookie’,'valor’,dias_para_expirar);
create: function(strName, strValue, intDays) {
if ( intDays ) {
this.date.setTime(this.date.getTime()+(intDays*24*60*60*1000));
var expires = "; expires=" + this.date.toGMTString();
} else {
var expires = "";
}
document.cookie = strName + "=" + strValue + expires + "; path=/";
},
// Ler as informações de um cookie em específico
// Forma de uso: w3cookies.read(’nome_do_cookie’);
read: function(strName) {
var strNameIgual = strName + "=";
var arrCookies = document.cookie.split(";");
for ( var i = 0, strCookie; strCookie = arrCookies[ i ]; i++ ) {
while ( strCookie.charAt(0) == " ") {
strCookie = strCookie.substring(1,strCookie.length);
}
if ( strCookie.indexOf(strNameIgual) == 0 ) {
return strCookie.substring(strNameIgual.length,strCookie.length);
}
}
return null;
},
// Delete um cookie desejado
// Forma de uso: w3cookies.erase(’nome_do_cookie’);
erase: function(strName) {
this.create(strName,"",-1);
}
}
var acesso = w3cookies.read('Cookie');
if(acesso == "123"){
document.getElementById("escondido").style.display="block";
document.getElementById("popup").style.display="none";
}
function entra() {
document.getElementById("escondido").style.display="block";
document.getElementById("popup").style.display="none";
w3cookies.create('Cookie','123',24);
alert(acesso);
}
Porfavor se alguem puder me ajudar eu agradeço muito pois ja não sei o que fazer.
Troca o teu:
if(acesso == "123")
{
document.getElementById("escondido").style.display="block";
document.getElementById("popup").style.display="none";
}
por:
window.onload = function()
{
if(acesso == "123")
{
document.getElementById("escondido").style.display="block";
document.getElementById("popup").style.display="none";
}
}
Acredito que ai irá funcionar do jeito que você quer.
William,
Muito obrigado, funcionou certiinho.
Pode trabalhar com COOKIES.