Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    Riconoscere versione IE

    Attualmente uso questo javascript per riconsocere se il browser è IE o Chrome:

    codice:
    var chrome = (/Chrome/.test(navigator.userAgent))?1:0;
    var ie=(/MSIE (\d+\.\d+);/.test(navigator.userAgent))?1:0;
    if (ie) {
      alert("Stai usando Internet Explorer! Scarica Mozilla Firefox ;)");
    }
    if (chrome) {
    	alert ("Stai usando Google Chrome! Scarica Mozilla Firefox ;)");
    }
    Ma adesso avrei necessità di fare in modo che, se il browser è IE, vada anche a verificare la versione e se la versione è 9 mi faccia un certo alert, se invece è precedente alla 9 me ne faccia un altro.
    Io non sono molto pratico di javascript, ho fatto un tentativo con questo codice, ma l'unica cosa che ho ottenuto è stata di non far comparire più nessun alert:

    codice:
    var chrome = (/Chrome/.test(navigator.userAgent))?1:0;
    var ie=(/MSIE (\d+\.\d+);/.test(navigator.userAgent))?1:0;
    if (ie) {
    	var iev=Number(RegExp.$1);
    	if (iev=="9") {
      alert("Stai usando Internet Explorer! Scarica Mozilla Firefox ;)");
    	}
    	if (iev!= "9") {
    	alert("Stai usando una versione preistorica di IE!");
    if (chrome) {
    	alert ("Stai usando Google Chrome! Scarica Mozilla Firefox ;)");
    }
    var s_width =''; 
    var s_height =''; 
    s_width=window.screen.width 
    s_height=window.screen.height
    if (s_width != "1920") {alert("Questo sito è ottimizzato per una risoluzione di 1920x1080")
    					}
    Come posso fare? C'è qualcosa di azzeccato nel mio tentativo o non c'entra nulla?

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    nel frattempo avevo provato con questo, preso qua e là su internet:

    codice:
    var chrome = (/Chrome/.test(navigator.userAgent))?1:0;
    var ie=(/MSIE (\d+\.\d+);/.test(navigator.userAgent))?1:0;
    function getInternetExplorerVersion() {
    
        var rv = -1; // Return value assumes failure.
    
        if (navigator.appName == 'Microsoft Internet Explorer') {
    
            var ua = navigator.userAgent;
    
            var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    
            if (re.exec(ua) != null)
    
                rv = parseFloat(RegExp.$1);
    
        }
    
        return rv;
    if (ie) {
    	    var ver = getInternetExplorerVersion();
    		if (ver >= 9.0 )
    			alert('Stai usando Internet Explorer! Scarica Mozilla Firefox ;)');
    		else
    			alert('Stai usando una versione preistorica di IE')
    			
    }
    ma non funzia...

  4. #4
    Ora ho provato questo:
    codice:
    var chrome = (/Chrome/.test(navigator.userAgent))?1:0;
    var ie=(/MSIE (\d+\.\d+);/.test(navigator.userAgent))?1:0;
    var version =navigator.appVersion
    if (ie) {
    	    if (version >= 9.0 )
    			alert('Stai usando Internet Explorer! Scarica Mozilla Firefox ;)');
    		else
    			alert('Stai usando una versione preistorica di IE')
    			
    		}
    if (chrome) {
    	alert ("Stai usando Google Chrome! Scarica Mozilla Firefox ;)");
    }
    Ma se lo apro con IE 9 mi esce comunque l'altro alert (Stai usando una versione preistorica). Come mai?

  5. #5
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Fai questa prova:
    codice:
    var chrome = (/Chrome/.test(navigator.userAgent))?1:0;
    var ie=(/MSIE (\d+\.\d+);/.test(navigator.userAgent))?1:0;
    var version =navigator.appVersion
    if (ie) {
    	alert("IE versione "+version);
    	    if (version >= 9.0 )
    			alert('Stai usando Internet Explorer! Scarica Mozilla Firefox ;)');
    		else
    			alert('Stai usando una versione preistorica di IE')
    			
    		}
    if (chrome) {
    	alert ("Stai usando Google Chrome! Scarica Mozilla Firefox ;)");
    }
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  6. #6
    Mi riporta come versione:

    codice:
    5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
    Da qui capisco che non funziona perchè vede la versione come 5.0 (o forse addirrittura vede la versione come tutta una stringa che comunque non è un valore uguale o maggiroe di 9)

    Però come estrapolo il 9.0 per fargli capire qual'è effettivamente la versione?

    edit: trovata la soluzione, grazie a questo link

    codice:
    var chrome = (/Chrome/.test(navigator.userAgent))?1:0;
    var ie=(/MSIE (\d+\.\d+);/.test(navigator.userAgent))?1:0;
    var ieversion=new Number(RegExp.$1);
    if (ie) {
    	    if (ieversion >= 9.0 )
    			alert('Stai usando Internet Explorer! Scarica Mozilla Firefox ;)');
    		else
    			alert('Stai usando una versione preistorica di IE');
    			
    		}
    if (chrome) {
    	alert ("Stai usando Google Chrome! Scarica Mozilla Firefox ;)");
    }
    var s_width =''; 
    var s_height =''; 
    s_width=window.screen.width 
    s_height=window.screen.height
    if (s_width != "1920") {alert("Questo sito è ottimizzato per una risoluzione di 1920x1080")
    					}
    Anche se per la verità non ho capito cosa fa
    codice:
    var ieversion=new Number(RegExp.$1);
    Cioè ho capito che estrapola il 9.0 dalla stringa, ma non ho capito in base a cosa. Come fa a farlo diciamo.

  7. #7
    Ho provato a verificare la versione anche di ff e chrome, però con chrome ho dovuto ricorrere ad un altro modo, essendo il numero di versione in fondo alla stringa di app.Version.
    Però in questo modo se metto la stringa di chrome, le versioni di ie e di ff non mi vegono più riconosciute.

    codice:
    var chrome = (/Chrome/.test(navigator.userAgent))?1:0;
    var chversion=parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./)[1], 10);
    var ie=(/MSIE (\d+\.\d+);/.test(navigator.userAgent))?1:0;
    var ieversion=new Number(RegExp.$1);
    var ff=(/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent));
    var ffversion=new Number(RegExp.$1)
    if (ie) {
    	    if (ieversion >= 9.0 )
    			alert('Stai usando Internet Explorer! Scarica Mozilla Firefox ;)');
    		else
    			alert('Stai usando una versione preistorica di IE, il sito non verrà visualizzato correttamente. Aggiorna IE o scarica Mozilla Firefox ;)');
    			
    		}
    if (chrome) {if (chversion < 21.0)
    				alert("Stai usando una versione non aggiornata di Google Chrome, aggiornalo o scarica Mozilla Firefox ;)");
    			else
    				alert("Stai usando Google Chrome "+chversion+" ! Scarica Mozilla Firefox ;)");
    }
    if (ff) {if (ffversion < 15.0 )
    			alert('Stai usando una versione non aggiornata di Mozilla Firefox! Per essere sicuro di visualizzare correttamente il sito aggiorna Firefox ;)');
    		}
    Se cancello la riga
    codice:
    var chversion=parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./)[1], 10);
    riprende a funzionare su ie e ff, altrimenti funziona su chrome ma non più su ie e ff.

  8. #8
    Da quel che ho visto se trasformo il codice che ho usato per trovare la versione di Chrome, togliendo [1] e [10]:

    codice:
    parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./))
    IE e FF riprendono a funzionare, ma naturalmente non viene più riconosciuta correttamente la versione di chrome.
    Ora mi viene in mente che l'unico sistema potrebbe essere quello di riuscire a estrapolare la versione di chrome con una espressione regolare, però non so come fare (e nemmeno se si possa effettivamente fare).
    Questa è la stringa che Chrome riporta come app.Version:

    codice:
    5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1
    Il numero 21 è quello che interessa, ma non capisco se e come estrarlo con una espressione regolare. Ho provato a cercare un po' e a fare degli esperimenti, ma non han funzionato.

    Soluzione trovata, bastava inserire la variabile chversion dentro il caso in cui Chrome è il browser:

    codice:
    var chrome = (/Chrome/.test(navigator.userAgent))?1:0;
    var ie=(/MSIE (\d+\.\d+);/.test(navigator.userAgent))?1:0;
    var ieversion=new Number(RegExp.$1);
    var ff=(/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent));
    var ffversion=new Number(RegExp.$1)
    if (ie) {
    	    if (ieversion >= 9.0 )
    			alert('Stai usando Internet Explorer! Scarica Mozilla Firefox ;)');
    		else
    			alert('Stai usando una versione preistorica di IE, il sito non verrà visualizzato correttamente. Aggiorna IE o scarica Mozilla Firefox ;)');
    			
    		}
    if (chrome) {var chversion=parseInt(window.navigator.appVersion.match(/Chrome\/(\d+)\./)[1]);
    			if (chversion < 21.0)
    				alert("Stai usando una versione non aggiornata di Google Chrome, aggiornalo o scarica Mozilla Firefox ;)");
    			else
    				alert("Stai usando Google Chrome! Scarica Mozilla Firefox ;)");
    }
    if (ff) {if (ffversion < 15.0 )
    			alert('Stai usando una versione non aggiornata di Mozilla Firefox! Per essere sicuro di visualizzare correttamente il sito aggiorna Firefox ;)');
    		}
    Ora funziona tutto!

  9. #9
    Già che son qua, senza aprire un nuovo topic, vi chiedo come posso fare per rintracciare il numero di versione di windows dalla stringa appVersion.
    Posto che NT 5.0 è windows xp, NT 6.0 è vista e NT 6.1 è 7, io devo estrapolare questo valore dalla stringa, ma non capisco come fare. dopo aver tentato inutilmente con delle espressioni regolari (non son proprio capace di usarle ), ho provato questo sistema:
    codice:
    var versione=navigator.appVersion;
    var winver=versione.substring(28,31);
    Peccato che funzioni su XP, ma su 7 non più, poichè la stringa cambia e i caratteri 28-31 vanno a corrispondere a "ind" (di Windows) e non più al numero dopo NT.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.