Includere diversi file JavaScript a seconda del browser?

Voglio includere un file JavaScript solo se il browser non IE. C’è un modo per fare questo?

  • Se si vuole utilizzare solo javascript per fare questo o utilizzare un linguaggio server-side come bene?
InformationsquelleAutor skroth | 2010-09-10



7 Replies
  1. 13

    Si può fare con IE i commenti condizionali, in questo modo:

    <![if !IE]>
    <script src="your-non-IE-script.js" type="text/javascript"></script>
    <![endif]>

    Si noti che il precedente viene elaborato dal browser non-IE, perché il condizionale è non un commento HTML, ma una istruzione di elaborazione, le po nel mezzo viene elaborato dal browser non-IE. IE vede il condizionale e si ignora il contenuto, perchè capisce il condizionale significa “Non si, muovono lungo.”

    Se si vuole fare qualcosa di solo per IE, è possibile utilizzare una forma simile, ma utilizza i commenti HTML invece (con il --) perché solo in questo modo si può contare su altri browser ignorando il contenuto. IE sa prestare attenzione a loro, anche se sono i commenti. Di più, sul link qui sopra.

    Nota che c’è un’velocità di caricamento della pagina implicazione su IE (non gli altri browser) quando è possibile utilizzare i commenti condizionali (che temporaneamente bloccare il download di altre risorse), di più qui: http://www.phpied.com/conditional-comments-block-downloads/


    Aggiornamento 2013: IE10+ non supportano i commenti condizionali di più.

    • Vorrei solo sottolineare che non è una istruzione di elaborazione. È solo il proprietario di Microsoft sintassi. Un’istruzione di elaborazione è in forma di <?processing-instruction-name-here ...data here...?>.
    • Abbastanza sicuro (en.wikipedia.org/wiki/Processing_Instruction). Wow, ho sempre pensato che fossero le istruzioni di elaborazione. Grazie!
  2. 3

    È possibile utilizzare un IE commento condizionale.

    Per ottenere qualcosa che verrà visualizzato nel browser diversi da IE, ma non in IE, e che continueranno a convalidare, è possibile utilizzare:

    <!--[if !IE]>-->
      <script src="..."></script>
    <!--<![endif]-->
  3. 3

    Prima, una nota: Questo non è davvero una buona pratica. Se possibile, si dovrebbe cercare di progettare il vostro sito web in un browser indipendente, in modo che funziona correttamente in tutti i browser, senza la necessità di mantenere hack e trucchi per il browser di problemi specifici.

    Ma se si vuole veramente fare questo, il modo più semplice per includere un file solo se il browser è IE:

    <!--[if lt IE 7]>
    <script type="text/javascript" src="global.js"></script>
    <![endif]-->

    (Include il file solo se il browser IE6 o meno).

    Tuttavia, se si vuole veramente farlo in un altro modo, qui sono alcune delle opzioni:

    1. Utilizzo del server browser di analisi di processo del browser prima che la pagina è stata disegnata. Che è, utilizzare un linguaggio lato server (Java, PHP o altro), per determinare ciò che il browser (di solito attraverso la stringa agente utente) e poi condizionale di includere il tuo file JS che modo. (Per esempio, è possibile utilizzare PHP get_browser funzione.)
    2. Utilizzare lato client browser sniffing per chiamare un altro JS file, se il browser non IE. È possibile determinare il browser con JavaScript, e quindi inserire un altro file JS nella pagina se il browser è nulla, ma di IE. (Per esempio, è possibile utilizzare jQuery browser funzione.)
    3. T. J. risposta fornisce un modo per farlo con I. E. condizionale commenti.
  4. 3

    È meno conosciuto rispetto i commenti condizionali, ma ho pensato di ricordare che si può utilizzare anche una comoda funzione chiamata di compilazione condizionale – vedere http://msdn.microsoft.com/en-us/library/7kx09ct1%28VS.80%29.aspx

    Questo esempio viene da loro documenti:

    /*@cc_on @*/
    /*@if (@_jscript_version >= 5)
    document.write("JScript Version 5.0 or better.<BR>");
    @else @*/
    document.write("You need a more recent script engine.<BR>");
    /*@end @*/
  5. 1

    Sì, condizionale script per IE la tua risposta:

    <!--[if lt IE 7 ]>
      <script src="/js/my_ie_script.js"></script>
    <![endif]-->
    • Che farà il quasi-contrario di quello che l’OP ha chiesto.
    • Dang, siete sulla strada giusta. Come ho fatto a perdere il ‘non e’ in OP domanda. La sua fine!
  6. 0

    Come circa girando intorno? Se questa è una possibilità che si può usare IE commenti condizionali: http://www.quirksmode.org/css/condcom.html

    Altrimenti si poteva annusare utente-agenti, ma questo è considerato “cattive pratiche”.

    • Non girare intorno, IE i commenti condizionali possono essere utilizzati per il targeting browser non-IE (sì, davvero).

Lascia un commento