Incompatibilité d'un code javascript pour firefox et IE8

Signaler
Messages postés
1
Date d'inscription
lundi 31 janvier 2011
Statut
Membre
Dernière intervention
6 mars 2012
-
Messages postés
1771
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
20 novembre 2020
-
Bonjour,
j'ai récupéré un code et je l'ai adapté à mes besoins seulement, ça ne marche que sur chrome. voici, le code en question veuillez m'aidez.

<!DOCTYPE html>
<HTML>
<head>
<meta charset = "utf-8"/>
</head>

<form NAME="mForm">





<textarea NAME="mTextArea" ROWS="100" COLS="100" ONCHANGE="setPosCurseur()" ONCLICK="setPosCurseur()"></textarea>
</form>

</html>
<script>
var g_posCurseur; // variable global positition du curseur

//définit la postition du curseur
function setPosCurseur() {
g_posCurseur = getPosCurseur(mForm.mTextArea);
}

//retourne l'emplacement du curseur
function getPosCurseur(oTextArea) {
//sauve le contenu avant modification de la zone de texte
var sAncienTexte = oTextArea.value;

//crer un objet "Range Objet" et sauve son texte avant modification
var oRange = document.selection.createRange();
var sAncRangeTexte = oRange.text;
//cette chaine ne doit pas se retrouver dans la zone de texte !
var sMarquer = String.fromCharCode(28)+String.fromCharCode(29)+String.fromCharCode(30);

//insère la chaine où le curseur est
oRange.text = sAncRangeTexte + sMarquer; oRange.moveStart('character', (0 - sAncRangeTexte.length - sMarquer.length));

//sauver la nouvelle chaine
var sNouvTexte = oTextArea.value;

//remet la valeur du texte à son ancienne valeur
oRange.text = sAncRangeTexte;

//recherche dans la nouvelle chaine et trouve l'emplacement
// de la chaîne de marquage et renvoie la position
for (i=0; i <= sNouvTexte.length; i++) {
var sTemp = sNouvTexte.substring(i, i + sMarquer.length);
if (sTemp == sMarquer) {
var cursorPos = (i - sAncRangeTexte.length);
return cursorPos;
}
}
}

//insère la chaine dans la zone de texte où le curseur est
function insereChaine(sChaine) {
//si curseur n'a pas de position : insère la chaine à la fin
if (typeof(g_posCurseur)=='undefined') {
mForm.mTextArea.value+=sChaine;
}else {
var firstPart = mForm.mTextArea.value.substring(0, g_posCurseur);
var secondPart = mForm.mTextArea.value.substring(g_posCurseur,mForm.mTextArea.value.length);
mForm.mTextArea.value = firstPart + sChaine + secondPart;
}
}
</SCRIPT>

1 réponse

Messages postés
1771
Date d'inscription
vendredi 9 mai 2008
Statut
Modérateur
Dernière intervention
20 novembre 2020
107
bonjour pour ie il faut utilisé getSelection et pas createRange()

essai de remplacé les lignes 30 et 31 par

var sAncRangeTexte=window.getSelection ? window.getSelection() : document.selection.createRange().text;