Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

PB : document.write avec un dedans...

1 réponse
Avatar
Sylvain Langlade
Bonjour tout le monde,

Je bloque sur une réaction bizarre de IE6 SP1 (sur W2k, avec tous les patchs
publiés par MS). Mon but est d'avoir une version imprimable de mes pages, à
moindre frais pour le serveur. C'est à dire : le navigateur récupère une
page avec plein de zolis tableaux imbriqués pour mon interface et
l'habillage du site. Forcément, ça imprime mal.

Mais grâce à la magie du Javascript, je déshabille ma page pour ne conserver
que la substantifique moelle, qui s'imprime sans problème. Et ce, sans que
le serveur ne soit à nouveau interrogé.

Shématiquement, mon script prend le code HTML d'origine :

<html>
<head>
<script language="Javascript" src="/lib.js"></script>
</head>
<body>
<..... zoli habillage ....>
<div id="mesInfos"><.... Mes infos brutes...></div>
<..... fin du zoli habillage ...>
</body>
</html>

et le transforme en :

<html>
<head>
<script language="Javascript" src="/lib.js"></script>
</head>
<body>
Mes infos brutes
</body>
</html>

Tout va bien, mon script fonctionne correctement, j'obtiens donc une
variable avec ce code HTML dénudé. Ensuite j'ouvre une fenêtre popup vierge,
et je document.write mon code à l'intérieur (en ayant pris soin d'insérer
une balise <BASE> dans la partie head, pour que tout marche comifo).

Et paf, le rendu visuel est ok, le controle du source de la page aussi, tout
marche mais il y a plantage lamentable et instantané sur des erreurs
javascript. La première étant "il manque un } sur la ligne 1". Avec de la
chance, quand le débugger de script veut bien m'afficher quelque chose, je
me rend compte que tout le contenu des fichiers js inclus (il y en a 3 dans
le head, et 1 dans la partie "infos brutes") est "massacré".

Plus précisément, tous les caractères accentués sont mangés et fusionné avec
le caractère suivant. Ce qui met une belle pagaille, forcément. Or je
précise que la page originale marche à 100% sans problèmes de ce style.

Bref, il semble que les éléments inclus (<script src="...">, mais peut-être
aussi <link stylesheet>) se fasse massacrer à cause d'un problème de jeu de
caractères "pas anglais", uniquement lorsqu'ils sont présent dans un
document créé au vol par le biais d'un document.write().

Pour info, mon script marche parfaitement bien avec Mozilla FireFox 0.8,
alors que je l'ai développé en compulsant maladivement la doc DOM de MSDN.
C'est un comble :-))

Si quelqu'un a une suggestion, un workaround ou meme simplement une
explication, je suis preneur... Merci d'avance!

1 réponse

Avatar
technicland
Sylvain Langlade nous a dit :
Bonjour tout le monde,

Je bloque sur une réaction bizarre de IE6 SP1 (sur W2k, avec tous les
patchs publiés par MS). Mon but est d'avoir une version imprimable de
mes pages, à moindre frais pour le serveur. C'est à dire : le
navigateur récupère une page avec plein de zolis tableaux imbriqués
pour mon interface et l'habillage du site. Forcément, ça imprime mal.

Mais grâce à la magie du Javascript, je déshabille ma page pour ne
conserver que la substantifique moelle, qui s'imprime sans problème.
Et ce, sans que le serveur ne soit à nouveau interrogé.

Shématiquement, mon script prend le code HTML d'origine :



Salut
a mon avis vas plutot sur le news de devellopement ou sur le news scripting
ici c'est plutot utilisation IE

--
Laurent [MVP IE www.technicland.com]
FAQ IE : http://faq.ie6.free.fr
Power IE6 : http://www.technicland.com/powerie6.php3
Co auteur de Internet 1000 trucs de Pros :
http://www.technicland.com/infolivre.php3