Après de longues recherches, il semblerait qu'il ne s'agisse pas simplement d'un problème d'expression régulière, mais plutôt d'une particularité d'Internet Explorer dans la manière dont son parser DOM gère les espaces et les retours à la ligne.
J'ai eu beau tester diverses méthodes d'accès aux données, mais sans succès :
1 2 3
| text = document.getElementById('demo').element.childNodes[0].data; // acces DOM
text = document.getElementById('demo').element.childNodes[0].nodeValue;
text = $('demo').get('html'); // MooTools |
La seule alternative compatible multi-browsers que j'ai trouvée consiste à englober mon <div> dans un élément <pre>, de telle sorte que les espaces et retours chariot soient conservés. J'ai alors logiquement pensé reproduire cette situation dynamiquement via le DOM, mais malheureusement sans succès:
1 2 3 4
| var demo = document.getElementById('demo');
var monPre = document.createElement('pre');
demo.parentNode.appendChild(monPre);
monPre.appendChild(demo); |
Ou même simuler le comportement d'un <pre> à l'aide des CSS... en vain.
<div id="demo" style="white-space:pre;">
Je me trouve dès lors comme qui dirait en manque d'inspiration pour trouver une solution correcte et portable face à ce problème. Si quelqu'un a déjà eu l'occasion de se pencher là-dessus, toute idée ou retour d'expérience seront les bienvenus !
D'avance, un grand merci !
Partager