Incompatibilité d'un code javascript pour firefox et IE8

chmidou Messages postés 1 Date d'inscription lundi 31 janvier 2011 Statut Membre Dernière intervention 6 mars 2012 - 6 mars 2012 à 13:53
@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 - 6 mars 2012 à 22:28
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

@karamel Messages postés 1855 Date d'inscription vendredi 9 mai 2008 Statut Modérateur Dernière intervention 18 avril 2024 153
6 mars 2012 à 22:28
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;
0
Rejoignez-nous
A voir également