se la condizione: se il browser è IE e IE versione del browser è di età superiore a 9

Se la condizione di seguito penso che dice – se il browser è IE e IE browser la versione più recente di 9, ma non ho IE 9 per provarlo, così è difficile sapere l’output corretto, anche questo non è al 100% di quello che voglio bcos questo script deve essere eseguito su altri browser troppo per impostazione predefinita, come Chrome, Firefox, ecc – è possibile impostare la condizione if?

if ($.browser.msie && parseInt($.browser.version) > 9) 
{
  //run this code
}

Il motivo per cui voglio usare se la condizione è che lo script appare errore su IE 7 e, naturalmente, la cosa migliore è di fissare lo script, ma non posso dire che la parte di script che IE non lo accetta (tutti gli altri browser funzionano perfettamente bene!). Sapete qualsiasi strumento che può essere utilizzato per eseguire il debug di script per IE 6, 7, 8, ecc? Sto usando notepad++ per scrivere il mio jquery, ecc, in modo da non fornire alcun debug roba…

Così, la mia migliore soluzione è di non eseguire questo script, se è il browser IE, che è di età superiore a 9.

A proposito, questo è il messaggio di errore di visualizzazione sul browser IE7 ma non riesco mai a capire!

Line:910  //which line?
Char:4   //what the hell is this?
Error: Object doesn't support this property or method //what?
Code: 0    //0 of what?
URL: http://localhost/mysite/page-1 //so which file is causing the error then? the .js or .html or something else??

sanguinosa IE!

grazie.

  • Bloody IE? Perché non si sa come eseguire il debug di codice? Che cosa potete trovare on line 910 pagina-1?
  • Debug in IE è possibile. Debug in IE è fastidioso. Bloody IE!
  • FYI è meglio rilevare le funzionalità e rispetto per rilevare i vari browser. blogs.msdn.com/b/ie/archive/2010/04/14/…
  • IE line/char/script numeri sono essenzialmente casuale spazzatura. Non hanno assolutamente nessun tipo di relazione con la posizione effettiva di un errore. Se volete scoprire dove si è verificato il problema, ottenere il Debugger di Script da Microsoft. Essa vi darà l’opzione di pop aprire una finestra al REAL posto si è verificato l’errore.
  • utilizzare BrowserStack per emulare IE 9 e risolvere i problemi in un sistema operativo/browser versione base. Di solito devo scrivere almeno quattro browser specifici fogli di stile per un determinato sito.
  • Ora che XP è morto il vecchio ie versioni potrebbe iniziare a morire……MORTE PER INTERNET EXPLORER

InformationsquelleAutor laukok | 2010-11-19

 

9 Replies
  1. 10

    In primo luogo, è possibile ottenere IE9 anteprima da scaricare dal sito Microsoft: http://ie.microsoft.com/testdrive/

    In secondo luogo, parseInt($.browser.version) > 9 sarebbe presumibilmente verificare che la versione è maggiore di 9, che ovviamente non sarà fino al v10 viene rilasciato. (forse si è inteso >= (‘maggiore o uguale a’)?

    Io di solito dire alla gente di evitare il rilevamento del browser o il browser di codice specifico. Ci sono momenti in cui è necessario, ma sono abbastanza rari. La maggior parte del tempo lo sviluppatore sarebbe meglio servita da sapere che cosa stava fallendo e di lavoro intorno ad esso (strumenti come Modernizr davvero di aiuto per questo genere di cose).

    Tuttavia ci sono momenti in cui uno deve semplicemente eseguire il rilevamento del browser.

    Nel tuo caso, se si ha realmente bisogno di rilevare IE, non fate il modo in cui si sta facendo (cioè di controllo per la versione 9); che sarebbe meglio controllare per le versioni precedenti, e vorrei suggerire che un commento condizionale sarebbe il modo migliore per farlo.

    <script>
    var i_am_old_ie = false;
    <!--[if LT IE  9]>
    i_am_old_ie = true;
    <![endif]-->
    </script>

    Quindi il tuo if() istruzione in seguito può solo guardare come questo:

    if(i_am_old_ie) {
       //do stuff for IE6/7/8
    } else {
       //do stuff for all other browsers (including IE9)
    }
  2. 12

    Il codice sembra corretto, ma ti sei dimenticato di impostare il parametro radix in parseInt:

    if ($.browser.msie && parseInt($.browser.version, 10) > 9){
    
      //you need to wait a couple years to test if it works...
      alert("I'm IE10 or 11...");
    
    }

    Questo non può causare errori

    • Inoltre, dove stai andando a trovare una versione di IE maggiore di 9?
    • capito! grazie tanto per questo! 🙂
    • oh che cosa accadrà ad altri browser? sarà lo script all’interno della staffa di essere eseguito su altri browser?
    • Haha, esilarante commento.
  3. 8

    Qui è la versione Javascript per verificare se il browser è IE:

    <script>
    
        function getIEVersion() {
            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.test(ua) != null)
                    rv = parseFloat( RegExp.$1 );
            }
            return rv;
        }
    
    
        function checkVersion() {
            var ver = getIEVersion();
    
            if ( ver != -1 ) {
                if (ver <= 9.0) {
                    //do something
                }
            }
        }
    
        checkVersion();
    
    </script>

    Questo metodo è utile in caso di utilizzo di HTML5 moduli specifici e desidera implementare alcune fallback funzioni nel caso in cui il browser non supporta queste caratteristiche, per ex. <canvas>

    • grazie per il codice, estimov.
    • Idem, Grazie esimov, questo si è rivelato molto utile 🙂
  4. 7

    C’è anche un metodo più semplice.

    Dal momento che questo è un commento, sarà ignorato da tutti gli altri browser tranne IE.

    var IE;
    //@cc_on IE = navigator.appVersion;

    Poi basta usare questo tu script per rilevare tutte le versioni IE.

    if (IE) {
    //This is IE.
    }
    else {
    //This is NOT IE.
    }

    O partita contro qualsiasi versione di simile a questo:

    if (IE <= 6) {}, if (IE < 9) }, if (IE == 7) {} etc etc...

    Ecco la fonte dove ho trovato questi tipi di istruzioni condizionali:
    http://www.javascriptkit.com/javatutors/conditionalcompile.shtml

    • Se tu giù qualcosa di voto, di almeno dire il perchè..
  5. 2

    Invece di mettere in un sacco di javascript inline si può solo aggiungere un div vuoto per la versione di ie è la destinazione, in modo da mettere il seguente all’inizio del file html, all’interno del tag body:

    <!--[if LT IE  9]>
        <div id="iedetect" class="oldie"></div>
    <![endif]-->

    Quindi, se la dichiarazione jquery per verificare la presenza di blocco.

    if ($("#iedetect").is(".oldie")) {
        //Do something
    } else {
       //Do Something else in all other browsers
    }
  6. 1

    Ho trovato a cascata funziona alla grande per multibrowser di rilevamento.
    Questo codice è stato utilizzato per modificare una dissolvenza per mostrare/nascondere in ie 8 7 6.

    $(document).ready(function(){
        if(jQuery.browser.msie && jQuery.browser.version.substring(0, 1) == 8.0)
             { 
                 $(".glow").hide();
                $('#shop').hover(function() {
            $(".glow").show();
        }, function() {
            $(".glow").hide();
        });
             }
             else
             { if(jQuery.browser.msie && jQuery.browser.version.substring(0, 1) == 7.0)
             { 
                 $(".glow").hide();
                $('#shop').hover(function() {
            $(".glow").show();
        }, function() {
            $(".glow").hide();
        });
             }
             else
             {if(jQuery.browser.msie && jQuery.browser.version.substring(0, 1) == 6.0)
             { 
                 $(".glow").hide();
                $('#shop').hover(function() {
            $(".glow").show();
        }, function() {
            $(".glow").hide();
        });
             }
             else
             { $('#shop').hover(function() {
            $(".glow").stop(true).fadeTo("400ms", 1);
        }, function() {
            $(".glow").stop(true).fadeTo("400ms", 0.2);});
             }
             }
             }
           });
  7. 1
    <!--[if IE 8]>
      <script type="text/javascript">
        //this is only executed for IE 8
      </script>
    <![endif]-->
  8. 1

    oppure si potrebbe fare questo

    <!--[if IE 9]>
      <script type="text/javascript">
        //this is only executed for IE 9
      </script>
    <![endif]-->

Lascia un commento