Newsgroup: it.comp.lang.javascript
Titolo: Mi correggete questo controllo?

Ho cercato di studiare qualcosa di browser sniffing ma non ho trovato
quanto cercavo. Mastico poco javascritp (leggo ma non so scrivere).
Uso uno script per cambiare la visibilità di un <div> css.
La prima funzione intercetta il browser.
Se questo è Netscape allora non imposta styleSwitch. Questo però mi
impedisce di caricare il layer appropiato.
Qual'è il valore che deve assumere netscape?
function init(){
       	  if (navigator.appName == "Netscape") {
		    layerStyleRef="layer.";
 			layerRef="document.layers";
			styleSwitch="";
		  }else{
 			layerStyleRef="layer.style.";
			layerRef="document.all";
 			styleSwitch=".style";		} 	}
 
 
Arjuna
-- 
Homo sum, humani nihil a me alienum puto.
 09/04/2004 13.13.11

Arjuna wrote:

Non sono un guru quindi senti anche le altre risposte, ma io per 
cambiare la visibilità di un div faccio così:
document.getElementById('idDelDiv').style.visibility='hidden';
mentre tu fai riferimento a dei layer, che mi pare deprecato.

Il problema degli scriptini che si trovano in rete è il fatto che sono
quasi tutti deprecati...
Sapresti consigliarmi qualche risorsa da consultare per aggiornare le mie
conoscenze di base?
Arjuna
-- 
Gnotis se auton.
 09/04/2004 14.45.20

 document.getElementById('idDelDiv').style.visibility='hidden';
Ho tradotto in questo modo, me lo correggi?
HTML:
<a title="quadri" href="javascript:divLayerId(layer6)"
divLayerId(layer2)"></a>
JAVASCRIPT:
var divNumShowing='layer1';
function showDivId(id){
     var divNumToShow=id;
     hideDiv(divNumShowing);
     showDiv(divNumToShow);
     layerNumShowing=layerNumToShow;	
     }
function showDiv(layerName){
eval(document.getElementById(+'["layerName"]')+'style.visibility="visible"');
     } 	
function hideDiv(layerName){
eval(document.getElementById(+'["layerName"]')+'sstyle.visibility="hidden"'); 	
     }
non conosco il significato delle varei ' e " ne dei + e del . quindi sono
andato ad istinto.
Non so distinguere una variabile da una stringa.
Arjuna
-- 
Homo sum, humani nihil a me alienum puto.
 09/04/2004 15.03.58

conoscenze di base?
Un punto di partenza puo' essere il sito della Netscape
http://devedge.netscape.com/
In particolare ti puo' interessare questo URL:
http://devedge.netscape.com/central/dom/
Non sono gli unici punti da cui partire, dipende anche da quello che
vuoi studiare.
http://www.w3.org/
http://www.mozilla.org/
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/xmlsdk/htm/dom_reference_2kdh.asp
'bye

     }
Qui hai fatto un mixing del vecchio metodo con il nuovo che ovviamente
non va bene :-) getElementById e' una funzione che ti ritorna un
oggetto corrispondente all'elemento con quell'id. Il codice che devi
usare e' di questo tipo:
function showDiv(layerName){
 var obj=document.getElementById(layerName);
 obj.style.visibility="visible";
} 	
function hideDiv(layerName){
 var obj=document.getElementById(layerName);
 obj.style.visibility="hidden";
}
BTW in questo modo il codice funziona solo su browser recenti, se vuoi
mantenere la compatibilita' con i vecchi devi mantenere anche il
vecchio metodo e usarlo quando determini che il browser non puo' usare
getElementById. Qualcosa del tipo:
if (typeof(document.getElementById)=="function") {
	// usi il nuovo metodo con getElementById
} else if (document.all){
	// vecchio metodo con document.all per IE
} else if (document.layers){
	// vecchio metodo con document.layers per N4.7x
}
'bye

La mia mente innervosita ha partorito quanto segue:
if (typeof(document.getElementById)=="function") {
	var divNumShowing='layer1';
	function showDivId(id){
 		    var divNumToShow=id;
		    hideDiv(divNumShowing);
 		    showDiv(divNumToShow);
 		    layerNumShowing=layerNumToShow;	 	}
	function showDiv(layerName){
	 var obj=document.getElementById(layerName);
	 obj.style.visibility="visible";
	} 	
	function hideDiv(layerName){
	 var obj=document.getElementById(layerName);
	 obj.style.visibility="hidden";
	}
 
} else if (document.all){
	var layerNumShowing='layer1';
	function showDivId(number){
 		    var layerNumToShow=number;
		    hideDiv(eval('"layer' + layerNumShowing+'"'));
 		    showDiv(eval('"layer' + layerNumToShow+'"'));
 		    layerNumShowing=layerNumToShow;	 	}
	function showDiv(layerName){
 
eval('document.all'+'["'+layerName+'"]'+'.style.visibility="visible"'); 	} 	
	function hideDiv(layerName){
 
eval('document.all'+'["'+layerName+'"]'+'.style.visibility="hidden"'); 	}
 
} else if (document.layers){
	var layerNumShowing='layer1';
	function showDivId(number){
 		    var layerNumToShow=number;
		    hideDiv(eval('"layer' + layerNumShowing+'"'));
 		    showDiv(eval('"layer' + layerNumToShow+'"'));
 		    layerNumShowing=layerNumToShow;	 	}
	function showLayer(layerName){
 
eval('document.layers'+'["'+layerName+'"]'+'.visibility=="visible"'); 	} 	
	function hideDiv(layerName){
 		    eval('document.layers'+'["'+layerName+'"]'+'.visibility="hidden"'); 	
}
}			
Non ho capito perchè devo usare tutti questi apici:
'document.layers'+'["'+layerName+'"]'+'.visibility="hidden"'
-- 
Gnotis se auton.
 09/04/2004 17.53.21