Ir para conteúdo

POWERED BY:

Arquivado

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

[ GuTo ]

Switcher trocar layout usando CSS alternativos

Recommended Posts

Pessoal,

 

Criei uma página normal, onde listo todos os css (type="text/css") em um combobox (tag select), para a pessoa escolher o layout.

 

Até aí tudo bem.

Estou gravando em um cookie a opção da pessoa, para que em visitas futuras, permaneça a escolha sem que precisa novamente escolher. Já sairá com o layout da última vez escolhido, simples.

 

Ok?

Mas isto não está funcionando corretamente, esta parte do cookie, tanto no FF como no IE.

 

O código na página está unobtrusive ( não obstrusivo ).

Caso não entendam, faço de um jeito mais simples pra quem não conseguir entender.

 

Embora eu precise de ajuda pra resolver o problema.

 

Podem olhar a página acessando url abaixo:

http://www.laroya.com.br/webdeveloper/switcher/

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa!!E ai guto beleza ? Brother, está alterando normalmente seu estilo no I.E/ Firefox. Só não está realizando o posicionamento perfeito.Grande Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu acho que o problema dele não é em mudar o estilo, é em gravar o estilo usando cookie..Eu estou sem tempo agora, não sei se vi certo, mas parece que ele não está recebendo o valor da opção selecionada para gravar o cookie..

Compartilhar este post


Link para o post
Compartilhar em outros sites

' date='Jan 8 2006, 08:55 PM' post='494338']<!-- aki um erro da programação, meu nick ajudou :D -->Mas isto não está funcionando corretamente, esta parte do cookie, tanto no FF como no IE.

Eu acho que o problema dele não é em mudar o estilo, é em gravar o estilo usando cookie..Eu estou sem tempo agora, não sei se vi certo, mas parece que ele não está recebendo o valor da opção selecionada para gravar o cookie..

Exato!Meu problema está no maldito cookie :P E parece estar tudo correto no código, e já debuguei... talvez eu não esteja conseguindo ver o tal erro... se vocês conseguirem :) Vou copiar o código todo da página e colocar aqui.
<?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pt-br"><head>	<title>Switcher :: gutoasp[em]gmail[at]com</title>	<meta name="author" content="Antonio Augusto Andre Silveira [ GuTo ]" />	<meta name="language" content="pt-br" />	<meta name="resource-type" content="document" />	<meta name="rating" content="general" />	<meta name="robots" content="all" />	<meta http-equiv="content-language" content="pt-BR" />	<meta http-equiv="content-style-type" content="text/css" />	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />	<link href="css1.css" type="text/css" rel="stylesheet" title="blue" />	<link href="css2.css" type="text/css" rel="alternate stylesheet" title="red" />	<link href="css3.css" type="text/css" rel="alternate stylesheet" title="green" />	<script language="javascript" type="text/javascript">	//<![CDATA[	var w=window, d=document, a, i, n, t;	function selectStyle(t) {		if (arguments.length==1) t=gE('trocacss').value;		for(i=0; i<n; a[i].disabled=a[i].type=='text/css'&&a[i].title!=t, i++);		setCookie('folhadeestilo',t,365);	}	function getCookie(n){//nome do cookie		if (d.cookie.length < 0) return null;		var begin = d.cookie.indexOf(n +"="), end; 		if (begin != -1) {			begin += n.length+1; 			end = d.cookie.indexOf(";", begin);			if (end == -1) end = d.cookie.length;			return unescape(d.cookie.substring(begin, end));		}	} 	function setCookie(n, v, d) {//Nome do cookie, Valor, expire Days		var ExpireDate = new Date();		ExpireDate.setTime(ExpireDate.getTime() + (d * 24 * 3600 * 1000));		d.cookie = n + '=' + escape(v) + ((d == null) ? '' : '; expires=' + ExpireDate.toGMTString());	}		//var w=window, d=document;	function gE(tI) { return (d.getElementById) ? d.getElementById(tI) : (d.all) ? d.all[tI] : false; }	//function actNo(e) { w.event? event.returnValue=false : e.preventDefault(); return false; }	//function getSrc(e) { var el; return ( ( el=e.target || (w.event && event.srcElement) ) && (el.parentNode==3 && el.parentNode || el) ) || false; }	function getKeyCode(e) { return e.keyCode? e.keyCode : e.charCode? e.charCode : e.which? e.which : void 0; }	function addEvent(elm, evType, fn) {		if (elm.addEventListener) { elm.addEventListener(evType, fn, true); return true; }		if (elm.attachEvent) return elm.attachEvent("on"+evType, fn);		alert("Handler could not be added"); return false;	}		function menulayout() {		if (!a) return false;		var menu=('<select name="trocacss" id="trocacss">');/*atenção!*/		menu+=('<option value="">Escolha um layout:</option>');		for(i=0; i<n; i++) {			if(a[i].type=="text/css") {				menu+=('<option value="'+a[i].title+'"');				if(t==a[i].title) menu+=('selected="selected"');				menu+=('>'+a[i].title+'</option>');			}		}		menu+=('</select>');		gE('menulayout').innerHTML=menu;	}	function init() {		n=(a=d.getElementsByTagName("link")).length, t=getCookie("folhadeestilo");		menulayout();		var el=gE('trocacss');		if (el) addEvent(el,"change",selectStyle)		if (t!=null) selectStyle(t,1);	}	addEvent(w,"load",init)	//]]>	</script></head><body><div id="geral">		<div id="cabecalho">		<form id="menulayout"></form>	</div>	<ul id="top-list-menu">		<li><a href="#">link</a></li>		<li><a href="#">link</a></li>		<li><a href="#">link</a></li>	</ul>	<p>meu paragrafo</p></div></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema está na variavel d da função setCookie()..

 

Lá em cima, você declarou a variavel d com o valor de document, certo? Ela vai funcionar até você chamar a função setCookie.. Pq nessa função você já muda o valor da vairavel d pela data (365) . .

 

Olhe a linha que grava o cookie

d.cookie = n + '=' + escape(v) + ((d == null) ? '' : '; expires=' + ExpireDate.toGMTString());

Ele teria que funcionar só no if() e não no d.cookie.. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif entendeu?

 

 

Acho que é isso.. tente mudar para ver..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aeee LEX!

 

Isso mesmo brother, valeu aí.

 

Que desatenção a minha :P

 

Dentro da função setCookie, eu mudei o nome do argumento d para ed ;)

Assim:

function setCookie(n, v, ed) {//Nome do cookie, Valor, expire Days		var ExpireDate = new Date();		ExpireDate.setTime(ExpireDate.getTime() + (ed * 24 * 3600 * 1000));		d.cookie = n + '=' + escape(v) + ((ed == null) ? '' : '; expires=' + ExpireDate.toGMTString());	}
Agora tá beleza no FF.

No IE tem um problema, depois q selecionei minha opção, beleza, troca o layout direitinho.

Aí fecho a janela.

Quando abro dinovo essa página, era pro cookie carregar minha opção e o layout ficar beleza.

Aki em casa carrega no select, mas na página fica sem estilo nenhum.

No FF fica tudo certo.

 

Sabe o q pode ser?

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.