
Note: les exemples de cette page ne fonctionnent toujours qu'avec Microsoft Internet Explorer 5.5 minimum (sans parler du fait que je ne teste que sous IE6).
La dernière fois, j'avais terminé par un problème lié au fait qu'il fallait ruser pour parvenir à sélectionner une image en mode texte afin que sa modification ou son utilisation en tant que lien puisse fonctionner. Finalement, ça ne devrait pas être si compliqué que ça vu que l'objet «selection» dispose d'une propriété «type» qui peut prendre trois valeurs:
Il doit donc suffire de tester cette propriété puis le cas échéant modifier la sélection pour être en mode texte. Dans un premier temps, il faut s'assurer que l'objet sélectionné correspond bien à une balise image. Ca ça a été plutôt simple mais par contre ça a été pas mal compliqué pour passer à une sélection en mode texte. Malgré tout, après avoir essayé plusieurs des méthodes de l'objet TextRange, j'ai finalement réussi.
Bon, voila le problème de la sélection des images est résolu. Ca permet non seulement de modifier une image mais aussi de l'utiliser pour définir un lien. Mais comme d'habitude, ça ne marche pas quand il s'agit de modifier ce type de lien.
Dans ce cas, «oSelection.parentElement().tagName» ne renvoie pas "A" mais "IMG". En cherchant un peu, il semble suffisant de tester si l'objet parent du parent de l'objet parent de la sélection (c'est pas simple!) ne serait pas lui même un lien puis de gérer un peu différement la modification du lien lorsque c'est le cas.
Et pour la mise à jour du lien:
C'est d'autant plus compliqué à faire et à comprendre que:
L'essentiel étant que ça marche...
Apparament, tout semble enfin fonctionner correctement (et quel fonctionnement!). Je vais donc pouvoir revenir à mes problèmes de code xhtml.
C'est vrai que cette fois-ci je n'ai pas fait grand-chose, mais ça ne se fait pas tout seul. Et en plus, j'ai perdu un peu de temps à ébaucher une boite de dialogue pour gérer la saisie des éléments <abbr>, <acronym>, <cite>... mais je crois que je vais laisser tomber.