(javascript) marche avec IE mais pas Chrome

guiguidu85 -  
 guiguidu85 -
Bonjour,

Je suis actuellement en train de faire un éditeur de message en BBCode pour un site web, et j'ai opté pour une interface avec des boutons cliquables effectuant une fonction javascript. Après essais du code, il fonctionne sous Internet Explorer mais pas sous Google Chrome. J'ai vérifié plusieurs fois et malheureusement, le code ne s'exécute pas.

Voici le code:
function bbcode(startTag, endTag)
{
		var field  = $('#forum_texte'); 
        var scroll = field.scrollTop;
        field.focus();
        
        if (window.ActiveXObject) {
                var textRange = document.selection.createRange();            
                var currentSelection = textRange.text;
        } else {
                var startSelection   = field.value.substring(0, field.selectionStart);
                var currentSelection = field.value.substring(field.selectionStart, field.selectionEnd);
                var endSelection     = field.value.substring(field.selectionEnd);               
        }
        
        if (window.ActiveXObject) {
                textRange.text = startTag + currentSelection + endTag;
                textRange.moveStart("character", -endTag.length - currentSelection.length);
                textRange.moveEnd("character", -endTag.length);
                textRange.select();     
        } else {
                field.value = startSelection + startTag + currentSelection + endTag + endSelection;
                field.focus();
                field.setSelectionRange(startSelection.length + startTag.length, startSelection.length + startTag.length + currentSelection.length);
        } 

        field.scrollTop = scroll;     
}


Merci d'avance pour votre aide,

Guiguidu85

1 réponse

  1. Mihawk Messages postés 4753 Statut Contributeur 846
     
    Hello,

    Tu utilises un window.ActiveXObject, c'est un objet internet explorer qui ne tourne que sous ce navigateur.
    2
    1. guiguidu85
       
      En effet, mais c'est justement pour vérifier si le navigateur est IE. Et le code censé être lu par Chrome est juste après. J'ai même essayé de supprimer la condition pour voir si c'était le code conçu pour les autres navigateur qui ne fonctionnait pas, et malgré cela, le code ne s'exécutait pas correctement.

      Selon le debugger de script, j'ai cru comprendre que le problème venait de la fonction substring et de l'attribut length mais je n'ai pas réussi à corriger le code.
      0
    2. Mihawk Messages postés 4753 Statut Contributeur 846
       
      Ca serait pas plutôt :
      var currentSelection = field.value.substring(field.selectionStart, field.selectionEnd-field.selectionStart);
      0
    3. guiguidu85
       
      Peut être, en tout cas le résultat est le même et cette fois-ci, le debugger m'indique que c'est "field.value" qui n'est pas défini. :-/
      0
    4. Mihawk Messages postés 4753 Statut Contributeur 846
       
      Quel type d'élément est le "field" ?
      0
    5. guiguidu85
       
      C'est la variable renvoyant au textearea.
      0