Cela devrait être facile (au moins personne d'autre ne semble avoir un problème similaire), mais je ne peux pas voir où il se casse.Problème dépendant du navigateur de rendu WMD avec Showdown.js?
Je stocke du texte Markdown'ed dans une base de données qui est entrée sur une page dans mon application. Le texte est entré en utilisant WMD et l'aperçu en direct semble correct.
Sur une autre page, je récupère le texte du markdown et utilise Showdown.js pour le reconvertir en HTML côté client pour l'affichage.
Disons que j'ai ce texte:
The quick **brown** fox jumped over the *lazy* dogs.
1. one
1. two
4. three
17. four
J'utilise ce bout de Javascript dans mon document jQuery événement prêt à convertir:
var sd = new Attacklab.showdown.converter();
$(".ClassOfThingsIWantConverted").each(function() {
this.innerHTML = sd.makeHtml($(this).html());
}
Je soupçonne que c'est là mon problème est, mais fonctionne presque fonctionne.
Dans FireFox, je reçois ce que je pensais:
Le renard brun rapide sauté par-dessus les paresseux chiens.
- un
- deux
- trois
- quatre
Mais dans IE (7 et 6), je reçois ceci:
Le brun rapide fox sauté par-dessus le paresseux chiens. 1. un 1. deux 4. trois 17. quatre
Donc apparemment, IE supprime les ruptures dans mon code de démarques et les convertit juste en espaces. Quand je fais une source de vue du code original (avant que le script ne s'exécute), les sauts sont là à l'intérieur du conteneur DIV.
Qu'est-ce que je fais mal?
MISE À JOUR
Elle est causée par la « bizarrerie » IE innerHTML/innerText et j'aurais mentionné avant que celui-ci sur une page ASP.Net à l'aide de données contrôles liés - il y a évidemment beaucoup de différents solutions de contournement autrement.
@CMPalmer - C'est excellent. C'est acceptable d'accepter votre propre réponse. +1 –
this.html devrait être $ (this) .html – ebryn
Wow c'était ennuyeux jusqu'à ce que j'ai trouvé cette réponse. Erik a raison, et si vous voulez juste changer un seul élément, quelque chose comme ça va marcher: $ ("# adminContent"). Html (sd.makeHtml ($ ("pré", $ ("# adminContent")).texte())); – Jedidja