2015-05-01 13 views
12

Ho bisogno di un particolare script per essere attivato nei browser Internet Explorer Solo!Come caricare uno script solo in IE

Ho provato questo:

<!--[if IE]> 
<script></script> 
<![endif]--> 

Purtroppo questo si ferma in realtà lo script da caricare.

MODIFICA: per tutti che chiedono perché ho bisogno di questo: IE rende lo scorrimento estremamente nervoso quando si usano alcune animazioni. Per affrontare questo ho bisogno di implementare uno script che fornisce lo scorrimento regolare a IE. Non voglio applicarlo ad altri browser in quanto non ne hanno bisogno e questo script, anche se rende lo scorrimento più fluido, lo rende anche un po 'innaturale.

+3

commenti condizionali non funzionano in IE10 e, soprattutto, supponendo che si sta eseguendo IE10/IE11 ha vinto' essere innescato – lifetimes

+0

Ciò può essere utile: http: //stackoverflow.com/questions/5505155/how-not-to-load-a-script-in-ie –

+0

Perché stai provando a caricare un particolare script solo in IE? – Jaco

risposta

22

Sono curioso perché è specificamente bisogno di indirizzare i browser IE, ma il seguente codice funzionano se questo è davvero quello che devi fare:

<script type="text/javascript"> 
    if(/MSIE \d|Trident.*rv:/.test(navigator.userAgent)) 
     document.write('<script src="somescript.js"><\/script>'); 
</script> 

Il la prima metà del Regex (MSIE \d) serve per rilevare Internet Explorer 10 e versioni successive. La seconda metà è per rilevare IE11 (Trident.*rv:).

Se la stringa del programma utente del browser corrisponde a tale modello, esso aggiungerà somescript.js alla pagina.

+0

Bene, succede che IE ha questa favolosa funzione chiamata scorrimento regolare ("Strumenti> Opzioni Internet> Avanzate>" Usa scorrimento uniforme ") che viene selezionata in modo predefinito e in effetti per creare tutti i tipi di problemi invece di risolverli. Caso particolare Ho un numero di animazioni scorrevoli che solo su IE rendono lo scorrimento estremamente nervoso a meno che non si abbia lo scrolling scorrevole disattivato, quindi devo aggiungere uno script di scorrimento solo per IE. –

+0

Funziona come un incantesimo. –

+0

Ciao, ho alcuni requisiti in cui ho bisogno di un file JS per chiamare in tutti i browser, ma non in IE10 e IE9, quale condizione funzionerà per questo? –

0

Il rilevamento delle funzioni è un approccio migliore: consiglio di esaminare Modernizr per migliorare progressivamente la soluzione quando dispositivi/browser sono in grado di supportarla.

Questo approccio basato su CSS a volte funziona anche, a seconda di cosa è necessario.

mettere questo nel <head>

<!--[if lt IE 7]> <html class="lt-ie9 lt-ie8 lt-ie7"> <![endif]--> 
<!--[if IE 7]> <html class="lt-ie9 lt-ie8"> <![endif]--> 
<!--[if IE 8]> <html class="lt-ie9"> <![endif]--> 
<!--[if gt IE 8]><!--> <html class=""> <!--<![endif]--> 

reference article - http://www.paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/

+0

Come alcuni commenti menzionano - questo è in aumento non utile a causa dei nuovi browser che non lo supportano –

0

È possibile utilizzare javascript per rilevare IE e inserire lo script dynamicaly:

var ua = window.navigator.userAgent; 
if (ua.indexOf("MSIE ") != -1|| !!navigator.userAgent.match(/Trident.*rv\:11\./)) { 
    var head = document.getElementsByTagName('head')[0]; 
    var script = document.createElement('script'); 
    script.setAttribute('src', 'YOUR_JS_SCRIPT.js'); 
    script.setAttribute('type', 'text/javascript'); 
    script.setAttribute('async', 'false'); 
    head.appendChild(script); 
} 

se è possibile utilizzare jQuery è possibile utilizzare più brevi codice:

if (ua.indexOf("MSIE ") != -1 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) { 
    $.getScript('YOUR_JS_SCRIPT.js'); 
} 

soluzione trovata in questo post Check if user is using IE with jQuery

+0

Questo non funzionerà per rilevare IE11. – nderscore

+0

@nderscore perché? – jcubic

+0

IE11 non ha MSIE nella stringa dell'agente utente. – nderscore

1

Si potrebbe modificare questo script per eseguire il IE specifica JavaScript:

var ua = window.navigator.userAgent; 
 
var msie = ua.indexOf("MSIE "); 
 

 
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer, return version number 
 
    alert('IE ' + parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)))); 
 
else alert('otherbrowser');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>