(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
A voir également:

1 réponse

Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   846
 
Hello,

Tu utilises un window.ActiveXObject, c'est un objet internet explorer qui ne tourne que sous ce navigateur.
2
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
Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   846
 
Ca serait pas plutôt :
var currentSelection = field.value.substring(field.selectionStart, field.selectionEnd-field.selectionStart);
0
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
Mihawk Messages postés 4315 Date d'inscription   Statut Contributeur Dernière intervention   846
 
Quel type d'élément est le "field" ?
0
guiguidu85
 
C'est la variable renvoyant au textearea.
0