Je ne sais pas.
Est-il possible de faire eval(nom).document.designMode = "on" avant la ligne du execCommand ?
Version imprimable
Je ne sais pas.
Est-il possible de faire eval(nom).document.designMode = "on" avant la ligne du execCommand ?
oui, bien sur
Meme en ajoutant le designMode="on", j'obtiens la même erreur qui est la suivante :
Erreur*: uncaught exception: [Exception... "Component returned failure code: 0x80004001 (NS_ERROR_NOT_IMPLEMENTED) [nsIDOMNSHTMLDocument.execCommand]" nsresult: "0x80004001 (NS_ERROR_NOT_IMPLEMENTED)" location: .......
Bonne chance pour comprendre !
NS_ERROR_NOT_IMPLEMENTED
===> Non supporté par FireFox
Mais tu peux le faire avec document.selection
Code:
1
2
3
4
5
6 try { document.execCommand(...) } catch (e) { var range = document.selection.createRange(); range.htmlText=("<a>" + range.htmlText + "</a>"); }
Oui c'est sûr, je peux faire comme ça mais je préfèrerais passer par un ExecCommand.
J'ai essayé. Les balises <a> sont bien insérées mais ya des balises <htmlsection> qui sont ajoutées et moi j'en veux pas.
Il les ajoute tout seul.
Il y a peut-être une alternative qui fonctionne sous Firefox.
Ben oui, ca ajoute des balises HTMLSection, vu que c'est mon code qui fait ca...Citation:
Envoyé par cradleofpain
En fait, FireFox permet d'ajouter des noeuds HTML à la selection, pas d'en changer le contenu, donc en fait je vire la sélection et j'ajoute un balise (ici HTMLSection car elle n'a aucun effet visuel sur la page) avec du html dedans... On sait pas faire autrement... Enfin si, mais alors tu dois passer par les méthodes natives de la sélection en JavaScript sous FireFox, ce qui donne ca, si je ne m'abuse (tjrs avec mon script):
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 document.createLink=function(id) { try { this.execCommand("CreateLink", true, id); } catch (ex) { // Version de execCommand("CreateLink", true, id) sous FF var textRange = this.selection.createRange(); var newLink = document.createElement("a"); newLink.href=prompt("Adresse du lien","http://"); newLink.id=id; newLink.innerHTML=textRange.htmlText; textRange = textRange._range; textRange.deleteContents(); textRange.insertNode(newLink); } }
J'ai fais quelquechose qui y ressemble fortement.
Mon problème est que le prompt ne permet pas de faire comme sous IE.
Il n'y a pas moyen de mettre une liste déroulante dans le prompt ?
Non hélas....
Et bien je pense que je vais rester comme ça sans mettre de liste.
Merci pour ton aide précieuse.
Je mettrais résolu quand je serais sûr de ne plus avoir de questions sur ce sujet.