Javascript document.tous les et de du document.getSelection - Firefox alternative
Le script ci-dessous va remplacer le mot sélectionné dans un textarea. Mais il ne fonctionne que sur IE. Une idée de comment le faire fonctionner sur Firefox? (Le problème semble résider dans (document.tous)? document.sélection.createRange() : document.getSelection();)
<SCRIPT LANGUAGE="JavaScript">
<!--//
var seltext = null;
var repltext = null;
function replaceit()
{
seltext = (document.all)? document.selection.createRange() : document.getSelection();
var selit = (document.all)? document.selection.createRange().text : document.getSelection();
if (selit.length>=1){
if (seltext) {
repltext= prompt('Please enter the word to replace:', ' ');
if ((repltext==' ')||(repltext==null)) repltext=seltext.text;
seltext.text = repltext;
window.focus()
}
}
}
//-->
</SCRIPT>
</HEAD>
<BODY>
<form name="f">
<textarea cols='40' rows='10' name='msg'></textarea>
<input type="button" name="b" value="Replace" onClick="replaceit();">
</form>
</BODY>
Vous devez vous connecter pour publier un commentaire.
OK, donc
document.getSelection()
retourne une chaîne de caractères dans FF. String::texte n'existe pas. Si vous ne pouvez pas définir de qui.La basc idée de ce que vous devez faire (et il va travailler dans les deux navigateurs):
Obtenir la zone de texte par son
id
- vous aurez besoin de définir uneid
attribut sur le textarea. Obtenez de départ et de fin de positions de la sélection. Puis prendre trois sous-chaînes: 0->start, start->fin, fin->string.longueur. Remplacer le milieu de la sous-chaîne avec ce qu'ils mettent dans l'invite de commandes. Définir latext
du textarea dans votre nouvelle chaîne formée.Exactement comment est jusqu'à vous, je vous ai juste donné un avant-goût de la procédure.
Le document.tous les bits est utilisé comme un test pour voir si c'est IE ou pas. La façon dont il est écrit.getSelection() est ce qui est utilisé dans Firefox et document.sélection.createRange() dans IE
Voir
http://www.hscripts.com/tutorials/javascript/ternary.php
Donc, le problème n'est pas le document.tout, mais plutôt que la getSelection() ne fonctionne pas. Je ne sais pas pourquoi exactement comme ce n'est pas une construction j'ai récemment utilisé, mais essayez de la fenêtre.getSelection (), comme ceci: (et google pour les autres, si ce n'est pas faire l'affaire)
http://www.webdeveloper.com/forum/archive/index.php/t-138944.html
Mon O'Reilly flamingo livre est au travail, mais je crois me rappeler la lecture du document.getSelection() en particulier ne fonctionne pas avec les textarea éléments, seul le "non modifiable" parties de la page.
Fenêtre.getSelection est la méthode qui rend un DOMSelection objet disponible dans firefox. C'est peut-être ce que vous cherchez.