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

Problème CONTENTEDITABLE + innerHTML

4 réponses
Avatar
MCI \(ex do ré Mi chel la si do\) [MVP]
Bonjour !

Avec .innerHTML= ... , IE (7) me modifie, parfois, intempestivement
le contenu.

Exemple:
alert(tobj.innerHTML) => affiche: <IMG src='aaa.jpg'>
tobj.innerHTML = "<IMG src='monfichier.jpg'>"
alert(tobj.innerHTML) => affiche: <IMG
src='file:///D:/dev/temp/monfichier.jpg'>

Je comprends ce que fais IE ; mais, comment bloquer cela ?

Merci d'avance, pour toute idée/solution.

Michel Claveau


PS : ce n'est pas urgent, car je contourne le problème avec un
post-traitement.

4 réponses

Avatar
Fred
in news:%, MCI (ex do ré Mi chel la
si do) [MVP] wrote :

Bonjour !



Hello,


Avec .innerHTML= ... , IE (7) me modifie, parfois,
intempestivement le contenu.



Claude Schneegans avait déjà soulevé le problème dans le groupe
scripting :
http://groups.google.fr/group/microsoft.public.fr.scripting/browse_frm/thread/d5112209de48956e/630306d6b294ae86?hl=fr&lnk=gst&q=CLaude+Schneegans+innerHTML#630306d6b294ae86

--
Fred

Avatar
MCI \(ex do ré Mi chel la si do\) [MVP]
Bonjour !

Exact, cela avait été évoqué. Mais, la solution de Gilles Laurent ne
convient pas à mon utilisation, car, alors, on perd l'affichage des
images (même si le HTML est correct).

Mais, j'ai trouvé une autre solution, un peu tordue. J'ouvre IE sur du
vide ("about:blank"), puis j'injecte le HTML (avec un simple
document.write + refresh). Dès lors, innerHTML, n'ayant pas de domaine
sous-jacent, n'a d'autres possibilité que d'utiliser le protocole
"about:", lors de sa conversion en adresse absolue ; et "about:" est
très facile à repérer.

Merci du lien, qui m'a permit de confirmer mes constatations.
--
Michel Claveau
Avatar
Hans Le Roy
Bonjour Michel,

"MCI (ex do ré Mi chel la si do) [MVP]"
wrote in message news:
Bonjour !

Exact, cela avait été évoqué. Mais, la solution de Gilles Laurent ne
convient pas à mon utilisation, car, alors, on perd l'affichage des images
(même si le HTML est correct).

Mais, j'ai trouvé une autre solution, un peu tordue. J'ouvre IE sur du
vide ("about:blank"), puis j'injecte le HTML (avec un simple
document.write + refresh). Dès lors, innerHTML, n'ayant pas de domaine
sous-jacent, n'a d'autres possibilité que d'utiliser le protocole
"about:", lors de sa conversion en adresse absolue ; et "about:" est très
facile à repérer.

Merci du lien, qui m'a permit de confirmer mes constatations.
--
Michel Claveau



Astucieux, ce truc avec about: Merci de bien vouloir le communiquer.

A+

Hans
Avatar
MCI \(ex do ré Mi chel la si do\) [MVP]
Re !

C'est (re)-parti pour un tour.

Aujourd'hui, nous allons discuter des ... protocoles.

Mais, par protocoles, il faut entendre, pour ce qui nous préoccupe, des
protocoles d'adressage par URL (l'expression est de moi, je ne suis pas
sûr qu'elle soit universellement reconnue).

Lorsqu'on fourni une adresse (une URL) à Internet-Explorer, elle
commence toujours par l'identifiant du protocole, suivi du signe
deux-points (":"), suivi par l'adresse de la cible (plus,
éventuellement, des paramètres).

Le protocole le plus connu, c'est : http: on le trouve en préfixe
de la plupart des adresses du Web.
D'autres sont très connus, mais on n'y fait pas trop attention :
ftp: pour le transfert de fichiers
file: pour accéder à un fichier
https: http sécurisé
nntp: dédié aux news (newsgroups)
mailto: qui permet d'envoyer un e-mail
javascript: pour javascript
about: vers le navigateur
et beaucoup d'autres...

Certains sont assez remarquables. Par exemple, about: par exemple,
permet d'adresser des fonctions internes du navigateur. Par exemple,
"about:Blank" est une page vide "about:Tabs" est un onglet vide
(l'onglet courant, hein, pas un nouveau).

Un autre protocole amusant, c'est javascript: Par exemple, dans la
barre d'adresse, taper:
javascript:alert("Vive Moi!");
Et validez. Le code Javascript est exécuté.

Un autre exemple. Ouvrez une page internet, puis, dans la barre
d'adresse, tapez :
javascript:document.body.innerHTML='<h1>Vive Moi
!</h1><br>'+document.body.innerHTML;
et validez. Pas mal, hein ?
Les petits futés aurant vu qu'il est possible d'adresser, et de
modifier, à la volée, le contenu de la page (y compris les éventuels
scripts de contrôles). Les conséquences peuvent être, disons,
"intéressantes"...

Pour finir, je précise quelques points :
- les protocoles sont toujours exécutés par le navigateur, sur le
poste client. Ils dépendent donc de la config de l'ordinateur et du
navigateur.
- les protocoles sont gérés par tous les navigateurs, mais pas
toujours de la même façon, et pas tous. Certains navigateurs en gèrent
plus que d'autres.
- il est parfaitement possible de créer ses propres protocoles. Et,
comme IE peut être utilisé à beaucoup d'endroits, ça devient intéressant
(gadgets, barres d'outils de la barre des tâches, aides .CHM, HTA, etc.)
- cherchez, sur Google ou LiveSearch, avec le mot "bookmarklet"


@-salutations
--
Michel Claveau