Newsgroup: it.comp.lang.javascript
Titolo: redirect in base alle versioni del browser

Io dovrei eseguire una redirect ad una pagina htm per tutte le versioni di
netscape uguali o superiori alla 6.
Ho provato a usare la funzione navigator.appVersion sul browser netscape 7.0
ma al posto di darmi 7 mi da 5 e non so il perchč.
Come si risolve?
grazie

 alert('sono netscape <= 6');
"sono netscape >=6"...

 Come si risolve?
Il redirect non è mai la soluzione migliore, specie se fatto con javascript.
Navigator.appVersion è in ogni caso la PEGGIORE scelta possibile,
non andrebbe MAI usato in uno sniffer, se non per browser davvero obsoleti.
Nel caso di netscape6+/mozilla l'unico test che dà un certo margine di garanzia
è quello sull'oggetto window.sidebar:
<script type="text/javascript">
<!--
if (window.sidebar)
{self.location.href="netscape6.htm"}
// -->
</script>
Qualunque altro metodo porta inevitabilmente a guai.
MaRoK

 Qualunque altro metodo porta inevitabilmente a guai.
Direi il contrario. E' sbagliato riconoscere un browser in base
all'esistenza o meno di un singolo metodo/proprieta'/oggetto. L'approccio e'
corretto se si vuole usare tale metodo, e allora se ne testa l'effettiva
esistenza.
Ma e' formalmente scorretto farlo per riconoscere il browser in toto. Quanto
meno, sarebbe bene fare un "controllo incrociato", se proprio vogliamo
riconoscere il browser in base ad una sua caratteristica.
La cosa migliore e' lavorare con la stringa userAgent, eventualmente in
connubio ad altro.
Questo perche' ci sono browser piu' o meno usati, che amano camuffarsi da
altri, esponendo proprieta' che poi non sono in grado di utilizzare
realmente.
Opera, per citare il piu' conosciuto.
--------------------------------
Inviato via 
http://usenet.libero.it

 Opera, per citare il piu' conosciuto.
Eh sì, Opera è il motivo principale
per cui sconsigliavo di usare appVersion, appName...
userAgent non saprei... ho sentito dire che Konqueror
camuffa anche quello ma non ho mai potuto verificare,
dunque non vorrei dire inesattezze.
Tuttavia non mi risulta che ci sia alcun browser
che risponda true a window.sidebar
a parte Netscape6+/Mozilla...
Tu sai di qualche cattivello che lo fa?
E, già che ci siamo...
sai di qualcuno che risponde
true a document.layers a parte netscape4
o true a window.opera a parte opera?
Così prendiamo tre piccioni con una fava... :o)
MaRoK

 TIA
nn posso crederci °_°;;;;
questo per camuffarsi o perche' hanno dimenticato di cambiare la stringa dal
codice sorgente copiato da IE? ^^
~~
artemis.alpeia
"Ma il medico ne ammazza uno per volta, l'ingegnere..."
(F.Sorbello)

 Opera/Mac dice di chiamarsi "Microsoft Internet Explorer".
Opera permette che sia l'utente a scegliere l'appName.
Lo puoi fare tu stesso:
premi F12 e seleziona uno tra i browser disponibili.
Il valore di default è appunto Microsoft Internet Explorer 5.0,
nel caso di Mozilla puoi scegliere tra le versioni 3.0, 4.78. 5.0
E questo già di per sé fa schifo.
Ma c'è di peggio:
Opera quando si chiama Explorer (cioè il default)
RISPONDE TRUE a document.all
Questa cosa non è grave, è gravissima
perché poi NON LO SUPPORTA!!!!!!!!!!!!!!!!!!!!!
Ed è il motivo principale per cui Opera in IE mode funziona male:
gli sniffer "classici", testato l'appName oppure document.all,
gli passano il codice in "explorese" e lui va in palla.
Dunque è bene evitare appName ed appVersion sempre
(se non in presenza di controlli incrociati, come giustamente diceva ZER0 prima)
Btw, non so perché degli esseri razionali abbiano potuto concepire
un'abominio del genere, è praticamente come ammazzare il browser...
E lo dico con rammarico perché per il resto
trovo Opera un prodotto molto valido, almeno per html/css
(un po' meno per javascript, ma insomma...)
Peccato... confido nella versione 7 ma mi sa che rifanno la stessa vaccata.
MaRoK

 MaRoK


 (un po' meno per javascript, ma insomma...)
Uno dei motivi per cui Opera non lo supporto.. -___-"


E' comunque una vergogna...
giusto oggi ho ricevuto una e-mail da un cliente che con opera 6 non entra
in un sito (
www.eir.it
 ); lo ho provato (passa come IE5), un
delirio...combobox e textbox non ridimensionate, funzioni di remote
scripting (rifatto, senza applet) non funzionanti, onClick di una combo non
ne attiva un'altra...
So che lavorandoci funzionerà; so che questo sito non è compatibile
netscape4 (come da richieste dei datori di lavoro)...ma che un browser
uscito recentemente si comporta in tal modo...boh, non lo capisco e non lo
approvo.

 approvo.
Io lo capisco, ma non approvo cmq.. Hai tutta la mia solidarieta'.


 supportato" e via dicendo.
E' quello che ho "osato" fare, non ti dico la e-mail che ho ricevuto
(testualmente: "attualmente utilizzo uno dei migliori web browser, Opera
6.10. Un vero peccato, ad onta del vostro dominio"..."Vi invito a rendere le
vostre pagine fruibili dall'intera comunità. Per fare questo è sufficiente
osservare le semplici raccomandazioni del World Wide Web Consortium
(
http://www.w3c.org
).") ...

 (
http://www.w3c.org
).") ...
Allora, qui entrano in gioco diversi fattori.
Innanzitutto, avevo capito che i problemi nascevano *solo* perche' il sito
riconosceva Opera come IE, ma che - in caso non facesse questo - la
visualizzazione funzionasse correttamente.
Invece, se ho capito bene adesso, indipendentemente da come Opera accede, ci
sono problemi.
Poi, dipende dalla tipologia del sito, da che obiettivi si prefigge, etc..
.. In ogni caso, io risponderei al suddetto tizio:
Onta e' che "uno dei migliori web browser" per funzionare - male - debba far
finta di essere un browser suo concorrente, e che si attenga SOLO in parte
agli standard web in circolazione, a differenza degli altri browser (DOM,
per citare un semplice esempio del W3C, o gli standard ECMA).
Se Opera stesso osservasse le stesse "semplici raccomandazioni del World
Wide Web Consortium", che sono care a lei quanto e soprattutto a me
sviluppatore, sarei felicissimo di supportare pienamente tale browser.
Questo giusto per dire le cose come stanno. Poi si puo' anche essere
diplomatici. :P


 sviluppatore, sarei felicissimo di supportare pienamente tale browser.
Farò rispondere al marketing che in quanto tale sa "leccare" (notare che
siamo a Lecco...) bene...
Comunque per ora la direttiva che ho ricevuto è "lascia perdere"...

 Comunque per ora la direttiva che ho ricevuto è "lascia perdere"...
Meno male. :)


 supportato" e via dicendo.
?
Non ho capito, perché dovresti fare una cosa del genere?
Piuttosto cambia lo sniffer...
(al posto di appName usa window.opera o, se preferisci, l'userAgent...)
MaRoK

 approccio. :)
navigando un po' con opera, mi accorgo che il 99.99999999999% degli sniffer
NON hano cambiato approccio :o)
MaRoK

 Lecco non e' poi cosi' distante.. ;P
[OT]
mah, io questo fine settimana sono incasinato; una pizza alla sera quando
vuoi, altrimenti si può fare fine settimana prossima...conosci una buona
pizzeria in quel di Milano? (io posso "scendere", anche se Milano puzza un
po'...)
[/OT]

Cambia lo sniffer nel senso di far passare opera 6?
Ma se poi il sito non va...preferisco tagliarlo fuori che dargli un sito
inusabile

 se si tramuta da NS4x? Pensavo di si.
No, almeno quello no... per ora! ;o)
MaRoK

 inusabile
Tu dicevi di tagliar fuori opera quando è in modalità IE.
Se opera in modalità IE non funziona
e opera in modalità non IE funziona (o viceversa)
la colpa è di qualche sniffer che non fa il suo dovere
o di qualche oggetto proprietario di IE disseminato nel codice...
dunque scrivere "Opera in modalita' IE non e' supportato"
segnala al mondo che il tuo codice è sbagliato...
Per carità, meglio segnalarlo che lasciare che si incasini tutto,
ma se si può correggere è meglio!
MaRoK

mi sono spiegato male, sorry...
attualmente taglia fuori se non è ie>=4 o netscape>=6; la segnalazione di
"opera come IE" era detta solo per indicare come entrare nel sito, nel caso
a qualcuno interessasse capire cosa combina opera con siti compatibili
netscape6 / IE4.
La mia non era una domanda, era solo una constatazione sul fatto che un
browser moderno si comporti in modo vetusto (e, quindi, IMHO, da escludere
da qualsiasi analisi di compatibilità)

 da qualsiasi analisi di compatibilità)
Eh, anch'io ho riscontrato diversi bachi col browser operaio,
specie quando si tratta di scrivere nei div, o gestire trasparenze...
però finora non mi è ancora capitato di vedere situazioni di non accessibilità,
tutt'al più ho visto un po' di cose spostate qua e là, od oggetti che spuntano
fuori alla cazzo di cane. Solo per curiosità, posso mica vedere la tua pagina
per vedere cosa succede?
MaRoK

www.eir.it
 , dovresti entrare con opera settato come IE (spero, internamente
ci arrivo, fammi sapere se non va)
Non vanno soprattutto le select onChange; so che magari bastano poche
modifiche (che qua si è deciso di non fare), però il fatto stranissimo di un
browser nuovo su cui non va il vecchio mi irrita non poco, soprattutto
perché mi sento quasi costretto a difendere IE di mamma Microsoft, dio me ne
scampi!!!

 (io posso "scendere", anche se Milano puzza un po'...)
Per la precisione "alloggio" in quel di Saronno, e Milano la schifo pur io,
quindi non saprei indicare alcun posto dove potersi cibare. Penso che la
cosa migliore per entrambi sia trovarsi a meta' strada da qualche parte.


 dio me ne scampi!!!
ehehehehe :o)
MaRoK