Newsgroup: it.comp.lang.javascript
Titolo: Javascript per selezionare Css

Ciao a tutti, 
Mi servirebbe trovare un ottimo Javascript che carichi diversi Css,
uno per Ie e uno per Netscape 4.x, ne ho trovato uno in rete che
funziona ma quando si apre Netscape 6 o Mozilla carica il Css che và
per Netscape 4.x, io cerco uno script che distingua tipo:
Hai Ie 5.5 o 6, Mozilla, Opera e Netscape 6 allora carica questo Css
Se hai (ancora?) Netscape 4.x carica questo qui (che ti fà vedere la
pagina ma ti perdi tutte le finezze).
Se mi date un linkozzo o direttamente lo script siete più simpatici di
Erice.
ciao

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Sicuramente per quello che vuoi fare sarebbe preferibile una
soluzione "a monte" del problema, come lo puo' essere una tecnologia
serverside come ASP............
Cmq sia quello che vuoi fare è cmq realizzabile. Fai così
######## ie.css ###########
var cssIE="body { background-color:black;color:white}";
########################
####### ns.css ###########
var cssIE="body { background-color:white;color:black}";
#######################
###### test.htm ##########
<html>
<head>
<title>Pagina di test</title>
<script language="JavaScript" src="ie.css"></script>
<script language="JavaScript" src="ns.css"></script>
<script language="JavaScript"><!--
var css;
if (navigator.appVersion.indexOf("MSIE")>=0) {
    // ie
   css=cssIE;
} else {
  css=cssNS;
}
with(document) {
    write('<style type="text/css">');
    write(css);
    write('</style>');
}
// --></script>
</head>
<body>
<div>Questa è una prova</div>
</body>
</html>
#######################
Nota che i .css in questione sono "falsi", nel senso che sono dei
file .js con estensione cambiata.....sicchè per fare in modo che
funzioni tutti alla perfezione il codice css in essi compreso deve
essere trattato come stringa js, ovvero dichiarazione variabile =
"css", come nell'esempio..............
- --
bye
Daniele Buffa
DIGITALmente Software Developer
________________________________
-----BEGIN PGP SIGNATURE-----
Version: PGP 7.1.1
iQA/AwUBPHDR1CGriwyclOY5EQIcOwCg16gbgeQ1qCkxQb7ticIfRLXx+KoAoJdo
CduRXw6PgSUPqpMehg1kP5Dg
=QhX/
-----END PGP SIGNATURE-----

"css", come nell'esempio..............
Sei stato gentilissimo, e ti ringrazio, ma siccome sono veramente una
socca su queste cose ho capito quasi nulla della spiegazione!
Non insultarmi ma se hai uno script già pronto forse è meglio, o un
link da dove scaricarlo (ora stò cercando su 
www.jsdir.com
) 
Ho forse mi sono spiegato male io!  intendevo uno script di quelli che
si vedono anche su (mi sembra) 
www.alistapart.com
 che caricano un
differente css per i browser.
ciao e grazie!

On Mon, 18 Feb 2002 08:31:28 GMT, 
lu...@digicolor.net
 (Luca Pagani)
wrote:
Ops! Free Agent mi si è incriccato, scusate!

"css", come nell'esempio..............
Sei stato gentilissimo, e ti ringrazio, ma siccome sono veramente una


"css", come nell'esempio..............
Sei stato gentilissimo, e ti ringrazio, ma siccome sono veramente una


 differente css per i browser.
Ma io alla fine ti ho postato uno script di esempio,che si compone di
una pagina web contenente il codice js e di due files .css contenenti
il codice css sottoforma però di variabile js............
Se ci dai un'occhiata con attenzione e ci perdi qualche minuto vedrao
che è tutto estremamente semplice........non vedo nulla di
particolarmente complesso, e non solo perchè mastico js da diversi
anni ormai...........
Sfortunatamente sono in ufficio, non posso prepararti i files ma
possono solo limitarmi a postare codice in modo veloce..............
- --
bye
Daniele Buffa
DIGITALmente Software Developer
________________________________
-----BEGIN PGP SIGNATURE-----
Version: PGP 7.1.1
iQA/AwUBPHDdGiGriwyclOY5EQLm0gCfWJU5FMQP7DiQeknNgRGhb4/NEdMAoJqZ
hJrkZ/HYlqoPgq9kZyk58pnS
=zcJI
-----END PGP SIGNATURE-----

 says...
Ehyla' Neo.. How much time.. :)
Riguardo a questo script (nota: hai lasciato la stessa variabile cssIE 
anche in ns.css.. fretta nel copy&past, suppongo), volevo chiederti il 
perche' di tutto questo "ambaradan"..
Sono un poco arrugginito, probabilmente, e ci sara' qualcosa che mi 
sfugge, per questo te lo chiedo direttamente :)
Perche' usare .css fittizzi? Non si poteva realizzare .css "reali" e poi 
tramite sniffing del browser scrivere il nome relativo al browser usato?
(Es. 
document.write("<LINK REL=stylesheet HREF=\""+cssName+".css\" TYPE=
\"text/css\">"); )
In modo tale da includere un solo file, invece che "n" (relativi al 
numero di browser considerati)..?
E' questo che mi torna un po' poco.. O cmq, volendo proprio usare .css 
"fittizzi" includere solo quello relativo al browser corrente.
Insomma, la domanda e': C'e' un motivo particolare, qualche baco o 
altro, per cui hai optato per una soluzione del genere?
-- 
C'ya,
ZER0
  :. job profile - coder.gfxer.webDesigner
"Quanti angeli danzano sulla punta di uno spillo?"

 altro, per cui hai optato per una soluzione del genere?
Hai ragione, la soluzione da te proposta è la + semplice e +
efficiente! Non ci ho pensato.........capita..........sarà il troppo
codice che devo esaminare per lavoro che mi spinge a commettere
qualche amenità nel tempo libero? ;) Speriamo di
no.................^_^
- --
bye
Daniele Buffa
DIGITALmente Software Developer
________________________________
-----BEGIN PGP SIGNATURE-----
Version: PGP 7.1.1
iQA/AwUBPHDoEiGriwyclOY5EQLUbQCfRRr6uVKfbEXajyVF0hwQgtQ7H14AoItH
qPOfgQoKI1SKq3OwPzG/MsDN
=BmAC
-----END PGP SIGNATURE-----

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
AGGIUNTA:
Ti conviene seguire la soluzione di ZERO, molto +
semplice..........si tratta di "includere" un css nella pagina a
seconda di quello che ti serve tramite document.write......cerca il
post di Zero in questo stesso thread per eventuali
chiarimenti...............
- --
bye
Daniele Buffa
DIGITALmente Software Developer
________________________________
-----BEGIN PGP SIGNATURE-----
Version: PGP 7.1.1
iQA/AwUBPHDobiGriwyclOY5EQKyJgCfebGO4stiMtq9eoaAAOd/O97ewAYAoIUH
6kStpzwWtiK6v/pGllhZLvri
=zRm4
-----END PGP SIGNATURE-----

altro, per cui hai optato per una soluzione del genere?
Spero, perchè stavo provando a vedere come andava (e non
andava...colpa mia sicuramente!)
ciao

 Speriamo di no.................^_^
Stiamo andando un po' OT ma rimediamo subito: Mi pare di aver visto a 
zonzo che ti sei dato alle RegExp assieme a Riccardo :)
Gran bella cosa.. io ci spupazzavo su qualche annetto fa..
.. mi ricordo che decisi di non supportare un vecchio Opera proprio 
perche' il "suo" JS non mi riconosceva le RegExp a dovere.. :D Che 
dramma.. e' stato uno shock.. un giorno mi decidero' a installare la 
nuova versione, ma per il momento rimango traumatizzato. ^_^'
Alla fine le regexp diventano una malattia. Ci incominci a fare di 
tutto, qualunque cosa, anche se non servirebbero o sarebbe piu' 
efficiente optare per un altro tipo di soluzione.. :D
Adesso sto facendo dei lavori in Perl e PHP (gran bella roba l'Open 
Source..), quindi mi sa' che ci rimettero' mano presto. :)


 qualche sito....
Scusami per la poca chiarezza, ma il post in questione non era 
"rivolto" a te e quindi non mi ero preoccupato di fornire uno script 
funzionante, quanto di parlare con Daniele di un paio di cose :)
Allora, il concetto logico e' il seguente:
Crei dei fogli di stile ESTERNI alla tua pagina web, tanti quanti ti 
servono per i vari browser o sistemi operativi.
Poi, tramite "sniffing" del browser (ovvero, il riconoscimento del 
browser attualmente usanto dall'utente) decidi quale di questi "fogli di 
stile" implementare nella pagina.
Se non ricordo male il tuo probelma era semplicemente differenziare 
NS4.x dal "resto del mondo".. un metodo poco ortodosso per il 
riconoscimento di questo browser e' testare l'esistenza di 
document.layers.. Lo uso in questo frangente per non implementare uno 
sniffing del browser completo (per quello puoi cercare sulla rete), 
visto che in questo particolare caso non ti serve.
Avrai quindi i due file .css, ovvero default.css e default_ns.css.
A questo punto:
<html>
<head>
	<title>Untitled</title>
	<script>
		var cssName=(document.layers)?"default_ns":"default";
		document.write("<LINK REL=stylesheet HREF=\""+cssName+".css
\" TYPE=\"text/css\">"); )
	</script>
</head>
Va da se' che i "nomi" delle classi che utilizzerai nei due CSS devono 
essere uguali.. Cambiera' solo il contenuto delle classi o stili che 
userai.. ovvero, se nella tua pagina hai un 
<div class="pippero"></div>
Allora la classe "pippero" deve essere contenuta in entrambi i fogli di 
stile esterni, ovviamente il contenuto di tale classe sara' diverso.
Spero di essermi spiegato, e d'esserti stato d'aiuto.
Scusa se sono stato un po' prolisso.. ma volevo cercare di toccare tutti 
i punti della discussione.. e poi ho un po' di arretrati su questo NG da 
recuperare ;)


 distingua tipo:
[cut]
Ecco un esempio:
<script type="text/javascript">
<!--
if (document.all){
document.write("<link rel=\"stylesheet\" href=\"perexplorer.css\"
type=\"text/css\">");
}
if (document.layers){
document.write("<link rel=\"stylesheet\" href=\"pernetscape.css\"
type=\"text/css\">");
}
if (document.getElementById){
document.write("<link rel=\"stylesheet\" href=\"pernetscape6.css\"
type=\"text/css\">");
}
// -->
</script>
Al Max puoi aggiungerci un
else {
document.write("<link rel=\"stylesheet\" href=\"qualunquealtrobrowser.css\"
type=\"text/css\">")
}
Ocio agli escape!
A presto! Roberto.
--
Roberto e Alessandro Abbate
Moderatori di it.comp.www.html
http://www.Risorse.net
, 
http://MigliorHosting.it

  Source..), quindi mi sa' che ci rimettero' mano presto. :)
Di OpenSource io ho solo Linux installato in un angolo del mio hd
solo soletto.............
Serverside sviluppo in ASP, lo faccio per lavoro, l'azienda dove
lavoro è partner Microsoft.......:)
Trovo comunque interessante l'idea dei progetti comuni
dell'opensource e a quanto pare alcuni linguaggio tipo perl e alcune
tecnologie quali PHP sono molto potenti............
- --
bye
Daniele Buffa
DIGITALmente Software Developer
________________________________
-----BEGIN PGP SIGNATURE-----
Version: PGP 7.1.1
iQA/AwUBPHD/MCGriwyclOY5EQK7PACg4Ez7NUGsBzDdOswq4+afTiMuhh4An33q
FPxclZfinMDtBJGfaJkVCFpA
=Nmqg
-----END PGP SIGNATURE-----

 tecnologie quali PHP sono molto potenti......
Non te ne rendi conto finche' non le vedi. :)
.. almeno, per me e' successo cosi'. :)


Ocio agli escape!
Ok, ci starò attentissimo, ma cosa sono? 
Ciao e grazie!

 Ok, ci starò attentissimo, ma cosa sono?
^__^
In js il carattere di escape è \. Come tu ben saprai una stringa è
delimitata in questo linguaggio di scripting da "" o ''. Se tu
dovessi avere la necessità di inserire " o ' (i caratteri che
delimitano le stringhe) dentro la stessa stringa *devi* usare il
carattere di escape
Esempio pratico:
1) alert("voglio inserire " dentro la stringa");
- -> messaggio di errore, "costante string senza terminazione", proprio
perchè js incontra " e crede che la stringa sia terminata.......poi
ne trova un altra e basta......e ti dice "guarda che hai sbagliato
qualcosa".........:)
2) alert("voglio inserire \" dentro la stringa")
Il risultato sarà *voglio inserire " dentro la stringa".
- --
bye
Daniele Buffa
DIGITALmente Software Developer
________________________________
-----BEGIN PGP SIGNATURE-----
Version: PGP 7.1.1
iQA/AwUBPHEeIyGriwyclOY5EQJr0gCglpgAMLe6q/hhJyWq1Uix8V6+OdYAn2Ew
61CxfGNBj4qiKZdoi5foa4+b
=9jLg
-----END PGP SIGNATURE-----

> Ok, ci starò attentissimo, ma cosa sono?
Beh te lo ha già spiegato brillantemente Neo, aggiungo solo che se ti trovi
male ad usare
\"
puoi cambiare con
'
Oppure invertire gli apici con le virgolette, tipo:
document.write('<link rel="stylesheet">');
Solo che alcune volte sei costretto ad utilizzare gli escape, per esempio:
document.write('L\'HTML è un "linguaggio" semplicissimo');
e potevo fare anche:
var apice = unescape( "%27" );
document.write('L'+apice+'HTML è un "linguaggio" semplicissimo');
o ancora:
document.write("L'HTML è un \"linguaggio\" semplicissimo");
e ancora:
document.write("L'HTML è un &quot;linguaggio&quot; semplicissimo");
ecc. ecc. ecc.
Il risultato non cambia. Sono utilissimi, anche se come hai visto in questi
esempi puoi non usarli (tranne in alcuni casi in cui sono fondamentali). Ti
ho anche presentato l'unescape, che traduce i caratteri passati dall'escape.
Se scrivi infatti:
document.write(escape("'"));
otterrai a video %27 e se fai il contrario:
document.write(unescape("%27"));
vedrai naturalmente '
Questo, solo per completezza di discorso :)
Ps: stai attento anche ai ritorni a capo nel document.write("<link rel bla
bla")... se quando fai copia e incolla ci sono levali ;)


 wrote:
Grazie ragazzi! quello datomi funziona, controllando anche gli escape
(mi avete fatto venire il mal di testa però...).
Ora provo e se và tutto bene entro il mese prossimo il sito è su...non
dico che contenuti però:-/ vi lascio con la curiosità (in realtà ve ne
fregherà un cazzo...però ;-)
ciao ciao

 (in realtà ve ne fregherà un cazzo...però ;-)
LOL! :)
