begin process at 2012 05 29 04:50:29
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Fonctionnement d'une propriété d'un navigateur

 > 

Défaut d'affichage sur IE8


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Défaut d'affichage sur IE8

samedi 23 octobre 2010 à 23:37:51 | Défaut d'affichage sur IE8

jperre

Je désire afficher dans le même élément <div>, un texte préformaté qui donne soit la version VBScript, soit la version Javascript d'un code ASP.
Pour cela j'utilise deux variables chaînes : textJS et textVB dans lesquelles les sauts de lignes sont générés par des "\n", la chaîne étant
placée à l'intérieur d'un élément HTML <pre>.
La bascule d'un texte à l'autre se fait à partir d'un click sur un élément <button> qui prend la valeur "Afficher le code en Javascript" lorsque le code affiché est du VBscript et "Afficher le code en VBscript" lorsque le code affiché est du Javascript.
Dans l'événement onload de l'élément <body>, je lance la fonction une première fois pour afficher le code en VBscript.
Le code s'affiche correctement sur IE8, Firefox, Chrome (tous les sauts de lignes sont effectués).
Par contre lorsque je clique sur le bouton pour afficher le code en Javascript :
- Sur Firefox et Chrome tout se passe normalement
- Sur IE8, tous les sauts de lignes commandés par les \n ont disparu (en fait, ils n'ont pas disparu, ils ont été basculés en fin de chaîne)

Quelqu'un a t'il déjà constaté ce bug?...
vendredi 29 octobre 2010 à 12:08:39 | Re : Défaut d'affichage sur IE8

PetoleTeam

Membre Club
Bonjour,
attention ne pas oublier les \r sous IE

;O)
vendredi 29 octobre 2010 à 22:01:06 | Re : Défaut d'affichage sur IE8

jperre

J'ai essayé de remplacer "\n" par "\n\r" cela ne fonctionne pas.
D'autre part, dans ma page HTML j'ai les éléments suivants :
<pre>
<span id="textcode"></span>
</pre>

Mon programme insère la chaîne de caractères avec la propriété innerHTML de l'élément <span>.

J'ai essayé d'insérer le texte directement dans l'élément <pre> en faisant :
<pre id="textcode"></pre>
Dans ce cas c'est encore pire car le texte supprime tous les sauts de lignes dès l'utilisation de la fonction liée à l'événement onload de l'élément <body>.

Pour moi, il s'agit du bug d'Internet Explorer.
samedi 30 octobre 2010 à 11:48:52 | Re : Défaut d'affichage sur IE8

PetoleTeam

Membre Club
Bonjour,
dans l'ordre c'est \r\n

<pre>
<span id="textcode"></span>
</pre>

n'est pas une bonne idée

Comment récupéres tu les lignes de code ?

Qu'obtiens tu lorsque tu fait un alert(Code.split('\n').length);

Pour moi, il s'agit du bug d'Internet Explorer.
non puisque cela marche au début...

J'avais fait un truc comme ceci dans une de mes sources
Code Javascript :
//---------------------
function Affiche_Code(){
  var S_Obj = document.getElementsByTagName('script');
  var szTmp  = new String(S_Obj[0].text);
  var szFind = new RegExp("\<","gi");
  var szTmp = szTmp.replace( szFind, "&lt;");
  document.write( '<pre class="code">&lt;script type="text/javascript"&gt;' +szTmp +'&lt;script&gt;<\/pre>');
}


;O)
samedi 30 octobre 2010 à 16:43:39 | Re : Défaut d'affichage sur IE8

jperre

Réponse acceptée !
La séquence \r\n ne fonctionnant pas mieux que la séquence \n\r, je viens de résoudre le problème avec ce petit script :
auparavant, je crée une variable globale :
var ie=false;
Ensuite dans ma fonction d'affichage du code, j'inclus ces instructions :

if (navigator.appName=="Microsoft Internet Explorer"&&ie==false) {
textJS=textJS.replace(/\n/g,"<br />");
textVB=textVB.replace(/\n/g,"<br />");
ie=true;
}
Avec ceci, le séquence \n est remplacée par un élément <br /> une seule fois et tout fonctionne.

Par contre, je confirme que dans une fonction alert(), les \n provoquent bien des sauts de lignes avec Internet Explorer.

Je persiste donc à croire que le comportement d'Internet Explorer n'est pas normal dans cette séquence.

Merci tout de même d'avoir essayé d'apporter des solutions à ce problème....
dimanche 31 octobre 2010 à 15:41:46 | Re : Défaut d'affichage sur IE8

PetoleTeam

Membre Club
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)


Cette discussion est classée dans : vbscript, élément, code, afficher, ie8


Répondre à ce message

Sujets en rapport avec ce message

Afficher une popup [ par BsEtZeOpLhD ] Bonjour.Je cherche un code pour afficher une simple popup à l'affichage d'une fenetre. Une popup affichant une page web (http://perso.wanadoo.fr/bsetz Afficher Masquer champs sur ev page précédente [ par fdthierry ] Bonjour à toutes et à tous,Tout d'abord Joyeux Noël à toutes et à tous Voici mon soucis:J'ai trouvé ce code qui me convient :http://www.javascriptfr.c afficher une ligne ou un textarea après un clic sur un lien [ par aimie ] Bonjour !!je voudrais affiché une ligne ou un textarea après avoir cliqué sur un lien(tout ceci sans changer de fenêtre).En effet j'ai un code où j'ai afficher un code caractere special et non pas sa valeur [ par nours2001 ] Bonjour,VOici mon probleme,je veux faire un lien vers un fichiers dont le nom comporte un "#", mon#fichier.htmlje veux donc faire un lien vers mon%23f ne pas afficher le code source [ par chrys700 ] Je souhaiterais savoir s'il est possible de na pas permettre l'affichage du code source Merci Chrys Afficher du texte en cliquant sur un lien [ par leclem ] Bonjour, je suis actuellement a la recherche d'un code javascript permettant, au click sur un lien, de faire apparaitre du texte HTML en décalant les Afficher du texte en cliquant sur un lien [ par leclem ] Bonjour, je suis actuellement a la recherche d'un code javascript permettant, au click sur un lien, de faire apparaitre du texte HTML en décalant les un code permettant d'afficher ce que j'ecoute sur un lecteur media [ par Tirebouchon ] Bonjour. Je suis débutant et malgrés de nombreux essai je n'arrive à rien du tout.Je cherche un code permettant d'afficher en ligne (exemple sur un bl Afficher le code source d'une page HTML [ par bullow ] J'essaye d'accèder au code source d'une page HTML.Le morceau de code suivant affiche le code de la page en cours dans une boîte :document.write(''+doc afficher/masquer code html [ par eax ] salut je cherche à afficher et à masquer un tableau html en cliquant sur une imagej'utilise actuellement un code php mais c chiant car ça recharge la


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales