2010-04-10 4 views

Répondre

5

Vous pouvez utiliser la compilation conditionnelle pour déterminer si le client utilise MSIE.

var IE = /*@[email protected]*/false; 

qui peut être utilisé comme

if (IE) { 
    // IE. 
} else { 
    // Others. 
} 

seulement dans IE, le ! seront compilés et pris dans l'expression, entraînant une nouvelle expression !false, qui est logiquement true. Cela fonctionne mieux que $.browser.msie car il peut être trompé par l'agent utilisateur et aussi mieux que document.all car cela affecterait également certaines versions d'Opera.

Cela dit, qu'est-ce que vous essayez de désactiver? Vous pouvez également utiliser la détection de caractéristiques. Voici une discussion à ce sujet: Browser detection versus feature detection

+0

J'essaie juste de désactiver un effet jquery fadein uniquement sur ie, car c'est trop lourd. merci pour les détails, c'est exactement ce que je voulais faire. – user295292

1

Je ne recommanderais pas, mais:

if(!$.browser.msie) { 
    //non IE script 
} 

Je fixerait le script pour travailler dans IE, ou l'exclure en fonction de certains disposent du navigateur ne supporte pas ... pas seulement parce que c'est IE. Avec n'importe quel navigateur, une fonctionnalité pourrait être ajoutée via une mise à jour demain, et votre script l'exclurait toujours. Voir $.support pour plus d'informations sur la détection de fonctionnalités.

Exclure quelque chose de l'exécution car "il n'est pas supporté" est un scénario parfaitement valide. Cependant, exclure quelque chose parce que "IE ne le supporte pas ... quand j'ai écrit ce code" n'est pas une bonne approche. Au lieu de cela, vérifiez si la fonctionnalité dont vous avez besoin est présente, et l'utilisateur obtient l'expérience la plus riche possible dans leur navigateur actuel.

-2

Si vous parlez de IE 6, vous pouvez planter en appelant cette fonction:

function crash_IE6() {for(x in document.open);} 

Sérieusement, la façon la plus utilisation de deteting IE vérifie la présence de document.all ... mais ce n'est toujours pas une bonne chose. Vous devriez vérifier nerver quel navigateur fonctionne votre script ... vous devriez juste vérifier la présence des méthodes nécessaires.

+0

Les personnes qui ont voté vers le bas pourraient-elles expliquer pourquoi? : - ° – xavierm02

+0

Je n'ai pas voté en bas mais je m'attendrais à ce que d'autres le fassent parce que la première ligne de votre réponse ne se rapporte pas du tout à la question. Aussi vous dites "Vous devriez vérifier Nerver quel navigateur votre script est en cours d'exécution". Je pense que la plupart des gens ne seraient pas d'accord avec vous à ce sujet. Dans de nombreux cas, vous devez connaître le navigateur que vous utilisez. –

+0

I nerver a dit que savoir que le navigateur que vous utilisez était une mauvaise chose ... Mais cette information peut être erronée ... parce que le client peut vouloir le cacher afin de faire échouer les exploits ... encore vous ne pouvez pas être sûr de votre détection si juste ... Et ce n'est pas l'avenir du tout. Les navigateurs vont changer et vous allez mettre à jour votre détection afin qu'elle détecte tous les navigateurs.La détection des failles est à l'épreuve du temps et vous permet de conserver le même code pour toujours (avec quelques changements mineurs). – xavierm02

1

Vous ne pouvez pas inclure le javascript pour les navigateurs tout en utilisant IE Microsoft's recommended way of inserting a conditional comment:

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

ou simplement envelopper le code que vous voulez exclure dans le commentaire.

+0

Ce n'est pas la syntaxe d'un commentaire conditionnel "not IE". – Quentin

+0

Selon le site Microsoft, je suis lié à c'est. Si vous pensez que vous savez mieux que s'il vous plaît poster ce que vous pensez est correct, sinon rétracter votre commentaire. –

Questions connexes