Aide - Recherche - Membres - Calendrier
Version complète : createRange et compatibilité Opéra
Forum Développeur - Administration serveur, programmation et base de données > Programmation > Javascript et AJAX
Fred
Salut,

Voici un morceau de la fonction que j'utilise pour formater mon texte en BBCode.

Cette fonction marche sous Firefox / IE mais pas sous Opera :
Code
function ajoutBBCode(debutTag, finTag, id)
{
var obj = document.getElementById(id), sel;
 obj.focus();
 if (document.selection && document.selection.createRange){
   sel = document.selection.createRange();
   if (sel.parentElement()==obj)//si sel est dans obj
sel.text = debutTag+sel.text+finTag;
 }




Pour marcher sous Opera, je dois utiliser la méthode document.selection.createRange.text, mais alors ça ne marche plus sous IE car le BBCode s'insère en fin de textarea.
Code
function ajoutBBCode(debutTag, finTag, id)
{
var obj = document.getElementById(id), sel;
 obj.focus();
 if (document.selection && document.selection.createRange.text){
   sel = document.selection.createRange().text;
   if (sel.parentElement()==obj)//si sel est dans obj
sel.text = debutTag+sel.text+finTag;
 }


J'ai aussi essayé la méthode document.getSelection pour IE, mais rien n'y fait.
Vous avez une idée, où j'ai besoin de vacances ?
jep
Quid de :

Javascript
function ajoutBBCode(debutTag, finTag, id)
{
var obj = document.getElementById(id), sel;
obj.focus();
if (document.selection && document.selection.createRange){
sel = document.selection.createRange();
if(window.opera) sel = sel.text
if (sel.parentElement()==obj)//si sel est dans obj
sel.text = debutTag+sel.text+finTag;
}
}

icon_question.gif
Fred
Ca ne fonctionne pas.
J'ai regardé du côté de SelfHtml, qui indique une autre méthode pour Opéra qui passe par les expressions régulières pour calculer la position d'insertion.
http://actuel.fr.selfhtml.org/articles/javascript/bbcode/

Sol@rweb
Salut,

Tu n'as pas moyen de faire une variable pour savoir si c'est un navigateur gecko, ie ou opera et d'adapter en fonction ?

++
Thanh
En tout cas c'est pas depuis longtemps que document.selection marche pour Firefox. Jvais pouvoir me remettre à coder un truc.
Fred
Si bien sûr, mais je voulais faire "simple".
La détection du navigateur nécessite de faire autant de variable par différence de navigateur. Ca devient impossible à gérer si on veut livrer un produit Accessible/Compatible.
La méthode donnée par SelfHtml contourne celà, mais elle m'oblige à reprendre le source (je suis fainéant en ce moment).
Plutôt que de détecter le navigateur, je pensais swicher la méthode comprise par le navigateur (plus généraliste) en pensant que ça marcherait.
Mais j'ai pas trop travaillé dessus encore.
Sol@rweb
oki oki,

C t pour savoir pourquoi tu cherchais à éviter cette solution wink.gif

Merci bien et amuse toi bien avec l'aute solution wink.gif

+
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'informations, la mise en page et les images, veuillez cliquer ici.
Invision Power Board © 2001-2009 Invision Power Services, Inc.