11
votes

JQuery, HTML5, ANNEXE () / APPENDTO () ET IE

Comment reproduire:
  1. Créer une page HTML5.

  2. Assurez-vous que vous avez le script de REMYSHARP.COM/2009/01/07/HTML5-Enabling-script/ ajouté de sorte que c'est-à-dire de remarquer les balises.

  3. Créer un codé

    Tag.
  4. Utilisation de jQuery 1.3.2, appendez une autre section Section Tag: $ ('# n'importe quoi'). Ajoutez ('

    '); Jusqu'à présent, tout fonctionne dans tous les navigateurs.
  5. Répétez l'étape précédente. $ ('# quoi que ce soit'). Ajoutez ('

    '); C'est là que IE6 / 7 échoue. Firefox / Safari continuera à travailler.

    ERREUR

    Erreur Popup Capture d'écran

    Pensées
    • Cela pourrait être que IE6 / 7 ne peut pas gérer la balise de section HTML5. Je dis cela parce que lorsque je change l'étape 4 de

      à
      , IE6 / 7 commencera à fonctionner.
    • Si j'utilise document.createeelement () et crée mon nouvel élément, cela fonctionne, mais il semble que JQuery's annexe () a un problème avec HTML5 éléments.


    • 1 commentaires

      Jusqu'à présent, aucune réponse n'a été trouvée. Je suis retourné à XHTML 1.0 strict. C'était mon seul problème.


5 Réponses :


-2
votes

HTML5 n'existait pas quand IE6 et 7 ont été développés.


3 commentaires

Semble être bon sens pour moi


Il n'est pas passif-agressif de dire qu'une banque conçue des années plus tard n'est pas prise en charge; Peut-être que ce n'est pas imaginatif ni satisfaisant, mais il n'est certainement pas passive-agressif. C'est juste une déclaration de fait.


Oui La réponse n'est pas vraiment pertinente pour la question.




1
votes

est la poignée HTML5 Shiv innerhtml ? Ie très probablement traite innerhtml différemment des méthodes DOM, telles que CreeeeEeEntement innerhtml au lieu des méthodes DOM. Vous pouvez essayer de réécrire

comme
(qui, à première vue, déclencher des méthodes DOM le processus de nettoyage) et voir s'il se comporte différemment. Si tel est le cas, vous avez identifié un bogue dans JQuery et une limitation de la HTML5 Shiv. Sinon, au moins, il est une possibilité de traverser.

1 commentaires

J'ai essayé ce que vous avez suggéré et cela n'a pas fait de différence. J'ai vérifié dans le traqueur de bugs de jquery et je n'ai rien fait de ce que c'était signalé. Être que c'est HTML5, je sais pas beaucoup de soutien / pensée a été placé.



18
votes

Le bogue est dans la mise en œuvre de IE de InnerHTML - pour une raison quelconque, il n'aime pas les éléments "inconnus" insérés via innerhtml - tandis que les scripts DOM sont bien.

jQuery utilise crée une version de holding, puis tombe dans le balisage que vous souhaitez ajouter via innerhtml. Ie voit maintenant les éléments inconnus comme deux nouveaux éléments cassés, c'est-à-dire

Contenu est vu comme article , #text , / article , causé par innerhtml borking.

Voici un exemple, vérifiez-le dans IE et vous verrez que la méthode d'insertion innerhtml rapporte de manière incorrecte 3 nœuds insérés dans la DIV: http://jsbin.com/olizu

capture d'écran pour ceux sans IE: http://leftlogic.litmusapp.com/pub/2c3ea3e


1 commentaires

Mise à jour: à partir de maintenant HTML5SHIV a une solution pour ce problème innerhtml, donc si vous êtes déjà En utilisant cela, il suffit de la mettre à jour et de votre bien, sinon vous devriez l'utiliser.



6
votes

J'ai couru dans cette question aussi. La solution semble être d'utiliser innerhtml sur un élément déjà joint au document, puis extraire les nœuds créés. J'ai créé cette fonction Li'l pour le faire:

http://jdbartlett.github.com/Innershiv/


1 commentaires

Mise à jour: à partir de maintenant HTML5SHIV a une solution pour ce problème innerhtml, donc si vous êtes déjà En utilisant cela, il suffit de la mettre à jour et de votre bien, sinon vous devriez l'utiliser.