Je viens d'essayer de regarder mon site Web http://www.logmytime.de/ dans Opera (version 10.50) Cela me donne une "erreur d'échec de l'analyse XML" et refuse d'afficher la page Web.
Je peux choisir de "répéter le document en tant que HTML", puis la page fonctionne bien, mais ce n'est guère une solution à mon problème. P>
La chose étrange est que l'erreur survient toujours après la définition d'un HTML (au lieu de XTHML) DOCTYPE: P>
<script type="text/html" id="StopWatchTemplate" > <h1><a href="#" onclick="TimeEntriesList.EditTimeEntry('<#=timeEntryID#>')"><#=currentlyRunning?"Aktueller":"Letzter"#> Stoppuhr-Zeiteintrag</a></h1> <%-- Stoppuhr - Ende--%> </script>
10 Réponses :
Essayez d'un autre PC pour vous assurer que vous n'entrez pas de problème de cache. P>
Je l'ai essayé d'un autre ordinateur, mais le problème persiste toujours.
Vous avez l'attribut "Classe" spécifié deux fois. p>
de Contrainte de bien-être: Spécification unique d'ATT : p>
Un nom d'attribut ne doit pas apparaître plus d'une fois dans la même balise de démarrage ou une même étiquette d'élément vide. P> blockQuote>
-1: Merci pour votre réponse, mais vous ne répondez pas à ma question. S'il vous plaît voir mon édition ci-dessus.
En ce qui concerne votre question: «Pourquoi voudriez-vous éventuellement produire des documents invalides?»: S'il vous plaît voir mon édition ci-dessus.
@Adrian Grigore: Ce fait i> répond à votre question. C'est simple: la spécification interdit les navigateurs i> d'afficher des documents cassés. Point final. Si vous souhaitez afficher votre document, corrigez-le. En outre, vous écrivez: "J'ai vérifié la sortie source du navigateur pour vous assurer que Je n'ai fait aucune erreur B>". Clairement, vous n'avez pas vérifié très soigneusement, puisque vous avez manqué celui-ci.
Le code de page est mis en cache dans votre navigateur, c'est pourquoi vous continuez à voir l'erreur. Vous avez initialement vu l'erreur, car votre code n'est probablement pas valide. P>
Je l'ai essayé d'un autre ordinateur, mais le problème persiste toujours.
Votre document n'est pas un document HTML valide. Donc, le navigateur devrait em> le rejeter. Malheureusement, en raison d'un accident historique, la plupart des navigateurs ne rejoignent pas de documents non valides, mais essaient plutôt de les réparer (généralement avec de jolis résultats de merde), de sorte que l'Authro n'a même pas remarque que son document est cassé. Heureusement, avec XHTML , les fournisseurs de navigateurs ont décidé de résoudre ce problème et rejettent réellement des documents non valides. Dans votre cas, vous fournissez votre document comme XHTML avec le type Application / XHTML + XML CODE> MIME TYPE: P>
# curl --head http://www.logmytime.de/
HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 12529
Content-Type: application/xhtml+xml; charset=utf-8
^^^^^^^^^^^^^^^^^^^^^
Server: Microsoft-IIS/7.5
X-AspNetMvc-Version: 2.0
X-AspNet-Version: 2.0.50727
Set-Cookie: Referrer=None; path=/
X-Powered-By: ASP.NET
Date: Tue, 04 May 2010 16:08:40 GMT
+1 pour avoir volé ma réponse. Le document a l'air automatiquement généré par moi, mais c'est un peu bizarre en considérant ASP.NET MVC ne générer pas le code de page pour vous. Il utilise probablement des contrôles tiers ou quelque chose qui génère automatiquement le code HTML.
-1: Désolé, mais vous ne répondez pas à ma question. Il y a une bonne raison pour laquelle je voudrais utiliser un code non XHTML. S'il vous plaît voir mon édition ci-dessus.
@Adrian, il a répondu à votre question. La servage Web indique au navigateur Votre page est Application / XHTML + XML CODE>, le doctype approprié pour XHTML, ce qui le fait entrer en mode d'analyse XML. Mais vous ne le dis rien dans la page, mis à part le Doctype, qui est ignoré à cause du type MIME. Comme le balisage de votre page est totalement cassé b>, le navigateur augmente une erreur d'analyse XML.
Ce journal de CURL indique que votre serveur envoie la page comme xhtml
@Adrian Grigore: Tout d'abord, si vous souhaitez utiliser non-XHTML, alors pourquoi le servez-vous comme application / xhtml + xml code>? Et deuxièmement, il n'a rien à voir avec XHTML. Votre document est invalide html i>, de toute façon. Peu importe que vous interprétiriez comme xhtml ou html, car il est ni i>.
Dans ce cas, je suppose que ma question est "Pourquoi le serveur Web envoie-t-il la page comme xhtml?"
Jörg: J'utilise le moteur de micro-modèles JavaScript, c'est pourquoi ma page ne peut jamais être valide XHTML, même si je corrige les autres erreurs évidentes. Voir le modèle d'exemple dans mon édition1 ci-dessus.
@Adrian Grigore: Cela pourrait être pertinent: Stackoverflow.com/Questtions/2013224/...
@Andrian, votre serveur Web le sert sous forme de XHTML car c'est la manière dont IIS est configuré par défaut avec n'importe quelle page Web ASP.NET.
Vous pouvez lire des trucs à ce sujet sur
On dirait que le serveur servant des types de mime différents à différents agents utilisateur. Firefox obtient du texte / HTML mais Opera (et Curl Selon Jörg W Mittag) reçoit Application / XHTML + XML. Avez-vous un code de négociation de contenu pour votre site? P>
Je n'ai aucun code sur ma page Web qui recherche le type de navigateur et renvoie différents types de contenu à différentes versions de navigateur. Ou voulez-vous dire autre chose?
Stackoverflow.com/Questtions/2013224/...
Si quelqu'un d'autre a le même problème: comme suggéré par le développement, il peut être corrigé avec un attribut simple contenttype = "texte / html" de l'élément de page. p>
edit: strong> Le problème était en fait causé par un bogue avec le fichier mobile.Browser que j'utilise dans mon projet Web. Le contournement ci-dessus fonctionne, mais ce n'est pas vraiment nécessaire dans mon cas. Voir Cette réponse Pour plus de détails. p>
Je travaille sur la documentation de cela aussi. Vous souvenez-vous de quelle version du MDBF que vous utilisiez?
@Scott Hanselman: Je ne peux plus vraiment dire que j'ai supprimé le MDBF de mon projet en faveur de 51degrees.mobi et le contrôle de version commutée sur Mercurial il y a quelques mois. Cependant, je suis à peu près sûr que j'ai téléchargé le MDBF après août l'année dernière.
Vous avez la bonne réponse (en-tête de type de contenu HTTP mandant de l'analyse XML) et il semble qu'il est réparé. Je vais simplement ajouter une allusion mineure sur la façon dont vous pouvez déterminer ce qui ne va pas d'opéra lui-même. Deux manières possibles: p>
Ceci n'est pas visible par défaut, mais si vous ouvrez la barre du panneau à gauche (appuyez sur F4 pour basculer si vous ne le voyez pas), puis cliquez sur le petit signe plus en bas, vous pouvez activer "Info". dans le menu. P>
Le panneau d'information affiche certaines informations assorties sur la page Actuellement ouverte, y compris le codage et le type MIME. p>
Appuyez sur Ctrl-Shift-i pour ouvrir des outils de développement (ou passer par des menus aux outils> Avancé> Opera Dragonfly) P>
Aller à l'onglet "Réseau", puis relancez le site. Vous verrez la demande et peut revoir les en-têtes. La comparaison avec les informations correspondantes de Firebug vous aurait montré la différence entre les en-têtes de type de contenu. (Ici, vous verrez également que l'opéra envoie une en-tête «Accepter» qui contient «Application / XHTML + XML». Cela signifie «Hi Server, si vous avez ce fichier au format XHTML Real, je comprendrais cela aussi bien». Peut-être que votre framework côté serveur a vu cet en-tête et a répondu à tort avec le type de contenu XHTML, même si le contenu était invalide?) P>
Merci pour les informations sur les outils de développement et le panneau d'information. Cela devrait être utile pour un débogage ultérieur.
C'est parce que vous l'avez dit à ...
<html xmlns="http://www.w3.org/1999/xhtml">
J'ai aussi considéré cela aussi, mais ce n'est pas vraiment pertinent dans ce cas. Le problème est en effet que le serveur envoie un type de contenu d'application / xhtml + xml; aux navigateurs d'opéra par défaut et texte / html à presque tous les autres navigateurs. Je ne suis toujours pas sûr de savoir pourquoi ceci est (je n'ai rien signalé ni dépendant du navigateur du côté serveur), mais au moins je sais maintenant comment le remplacer.
Si le serveur envoie la page en tant qu'application / XHTML + XML, le navigateur analyse sous forme de XML selon les spécifications. Lors de l'analyse de XML, la première erreur XML bien en forme d'arrêt arrêtera l'analyse et le client (navigateur) affiche généralement un message d'erreur. P>
Les analyseurs pour TEXT / HTML sont plus tolérants (en raison de l'historique du développement HTML). p>
Pour changer le type de contenu envoyé par le serveur, vous devez remplacer la valeur de l'en-tête HTTP: type de contenu. Cela peut être fait à travers la langue de script du côté serveur ou parfois dans la configuration du serveur tel que Apache, par exemple. Je ne sais pas comment Microsoft-IIS / 7.5 peut spécifier sur une base URI. P>
Type de contenu: Application / XHTML + XML; Charset = utf-8 ou Type de contenu: Texte / HTML; Charset = UTF-8 P>
Cela se produit surtout avec ASP.NET car il définit le type de contenu pour l'opéra comme application / xhtml + xml. Afin de finir ce problème. Vous devez définir le type de contenu sur text / html. La meilleure façon de résoudre ce problème est d'ajouter du code suivant au fichier de configuration .Browser pour Opera dans App_Browser File. P>
Y a-t-il quelque chose qui ne va pas avec votre balisage (c.-à-d. Les balises non fermées correctement?) J'essaie de l'exécuter via le validateur W3, mais cela ne se charge pas pour moi maintenant.
"Afin de démontrer cela, je viens d'insérer un exemple de modèle dans la page Web". - Quoi sont exactement et où avez-vous inséré?
Pourquoi voudriez-vous éventuellement produire intentionnellement des documents invalides?
@ M28, mais xhtml est i> XML et donc toute erreur d'analyse doit faire l'écorce du navigateur.
@ M28: Non, mais xhtml est toujours XML.
Votre page Web n'est pas valide HTML, non plus, donc même si i> Vous comprenez comment l'obtenir analysé en tant que HTML, cela ne va toujours pas résoudre le problème. Le problème est que votre page Web est cassée. La solution est de le réparer. C'est vraiment aussi simple. En fait, vous pourriez probablement l'avoir corrigé dix fois, juste au moment où vous avez passé à écrire vos commentaires.
Comment vous proposez-vous exactement pour corriger le modèle HTML de mon édition ci-dessus? Vous voudrez peut-être consulter cette page Web pour comprendre ce que le moteur microtemplant JavaScript est le suivant: ejohn .org / blog / javascript-micro-modèles