Bonjour,
Par contre, je confirme que dans une fonction alert(), les \n provoquent bien des sauts de lignes avec Internet Explorer.
pas seulement IExplorer mais TOUS les navigateurs
...essaies ce code sur les différents navigateurs
Code HTML :
<html>
<head>
<script type="text/javascript">
alert("Texte avec un\npassage à la ligne type '\\n'");
alert("Texte avec un\rpassage à la ligne type '\\r'");
</script>
</head>
<body></body></html> nota : \r\n est valide sous IExplorer et Opera
Ta façon de procéder fait que sous IExplorer tu perds l'indentation de ton code.
Le format de sortie de ton code dépend également du format avec lequel ton éditeur enregistre les fichiers, Windows, UNIX ou Mac, modifiant entre autre les line endings.
En insérant les textes en modifiant le
innerHTML de l'objet de destination tu t'exposes à des surprises, cette technique étant fortement utilisé mais pas forcément recommandable, bien que très pratique.
Il existe une méthode,
createTextNode de l'objet
document qui rempli ce rôle à ravir et en respectant la structure du DOM.
En relisant je présumes(???) que tu insères les code grâce à un
document.write, pourquoi dans ce cas ne pas tout insérer puis cacher/afficher ce qui t'intéresses suivant le besoin.
Je te livres ce petit code pour test, c'est assez instructif suivant les navigateurs et les formats d'enregistrement.
Code HTML :
<html>
<head>
<script type="text/javascript">
//----------------
function GetCode(){
var oScript = document.getElementsByTagName( 'script');
var szTmp = new String( oScript[0].text);
return( szTmp);
}
</script>
</head>
<body>
<h3>Ecriture par createTextNode</h3><pre id = "P_TEXT"></pre>
<h3>Ecriture par innerHTML</h3><pre id = "P_INNER"></pre>
<h3>Ecriture Directe</h3>
<script type="text/javascript">
//-- Get le Code
var S_Obj = document.getElementsByTagName('script');
var szTmp = GetCode();
//-- Ecriture directe
document.write( '<pre id = "P_DIRECT">' +szTmp+'<\/pre>');
//-- Ecriture createTextNode W3C
var oPre = document.getElementById( 'P_TEXT');
oPre.appendChild( document.createTextNode( szTmp));
//-- Ecriture innerHTML
oPre = document.getElementById( 'P_INNER');
oPre.innerHTML = szTmp;
</script>
</body>
</html>
Le principal restant que ce que tu voulais faire fonctionne !
;O)