2013-05-14 3 views
1

J'imagine que cela pourrait être une question facile et rapide pour quelqu'un qui est plus familier avec les modes de navigateur IE. Nous avons une fenêtre d'application intranet qui passe parfois à 'Document Mode: IE7 Standards' (w/Browser Mode: IE9) par les outils de développement - très rarement, il est donc difficile de dire exactement ce qui mène à la problème. Le résultat est que les champs de formulaire sont tous mélangés, les CSS/flottants sont biaisés, les scripts ne fonctionnent pas correctement, etc. Une fois le problème rencontré, la seule façon de le résoudre est de fermer complètement le navigateur et de redémarrer Internet Explorer.IE9 passant parfois en mode Document: Normes IE7

Nous avons finalement trouvé un utilisateur alors qu'ils connaissent le glitch, a ouvert des outils de dev, et a confirmé que le mode de document lui-même avait mis à IE7 et changer ce retour à IE9 tout fixe. Mais encore, une fois qu'il s'est mis à IE7, la seule façon de revenir par défaut à IE9 est de fermer le navigateur. Sinon, si vous fermez la fenêtre mais pas tout le navigateur, il revient à IE7 chaque fois que vous ouvrez la fenêtre.

Je ne sais pas ce qui pourrait causer ce problème de façon intermittente. Je pensais que ça pourrait être quelque chose à voir avec le Doctype? Quelqu'un peut-il offrir des conseils?

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="AppScreen.aspx.cs" Inherits="Project.AppScreen" %> 
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <link href="~/Styles/AppScreen.css" rel="Stylesheet" type="text/css" /> 
    <script src="Scripts/jquery-1.4.1.js" type="text/javascript"></script> 
    <title>Title</title> 

    <script type="text/javascript"> 
    //A couple other quickie scripts 
    </script> 
</head> 

Répondre

2

Vous dites que vous voulez savoir la racine du problème, ainsi va ici:

IE a un paramètre de configuration qui spécifie d'utiliser le mode de compatibilité pour les sites sur l'intranet local. Ce paramètre de configuration est activé par défaut.

Ce paramètre existe dans le but d'aider les entreprises qui mettent à niveau leur version IE, mais ne veulent pas mettre à jour leur logiciel intranet.

Le problème est bien sûr que beaucoup intranets ne tombent pas dans cette catégorie; vous voulez que IE utilise son meilleur mode même sur votre intranet. Mais le paramètre devait avoir une valeur par défaut dans un sens ou dans l'autre, et Microsoft a choisi de l'activer par défaut.

Ainsi, votre solution est de faire le tour des PC sur votre intranet et désactiver le paramètre. (Certains utilisateurs l'ont peut-être déjà éteint, ou l'ont fait par leur installation, ce qui expliquerait que cela n'arrive pas à tout le monde).

Alternativement, vous pouvez mettre la balise meta pour forcer IE à utiliser le mode préféré:

<meta http-equiv="X-UA-Compatible" content="IE=edge"/> 

Ici, IE=edge dit IE à utiliser son meilleur mode disponible, plutôt que de le fixer à une version IE spécifique.

Pour être honnête, il est une bonne idée de mettre cette balise meta dans votre code de toute façon, pour éviter tout problème au hasard avec les utilisateurs restants qui pourraient avoir mis IE au mauvais mode en quelque sorte.

Vous pouvez également spécifier l'indicateur X-UA-Compatible en tant qu'en-tête HTTP si vous ne souhaitez pas qu'il encombre votre code HTML.

Enfin, virant un peu hors sujet, mais il est intéressant de noter également que la définition de « intranet local » comprend également tous les sites en cours d'exécution sur votre PC. Cela signifie que ce paramètre attire souvent les développeurs web débutants qui travaillent sur localhost mais ne connaissent pas le réglage.

1

Essayez de placer dans votre <head> tag:

<meta http-equiv="X-UA-Compatible" content="IE=9"/> 
+0

Merci, bien que je me demande si cela pourrait être un pansement efficace. Je serais plus intéressé à trouver la racine du problème et à le résoudre, si possible. – RJB

+0

Cette réponse est correcte, mais pas idéale pour les utilisateurs IE10. Une meilleure réponse serait la même, mais 'content =" IE = edge "'. Cela forcera toute version IE à utiliser son meilleur mode disponible. – Spudley

Questions connexes