Posez votre question Signaler

Selection de texte

kanakus 20Messages postés 25 mars 2005Date d'inscription - Dernière réponse le 9 avril 2008 à 19:36
Bonjour,
Voila j'ai une petite question pour vous. Si je trouve une solution a mon pb, je m'enleve un belle epine du pied.
Donc j'ai une fonction getSelectedText qui me renvoye la selection du texte selectionné par l'utilisateur. Cependant j'aimerai recuperer la position du debut de la selection et la fin de selection. J'utilse GetSelectionStart et getSelectionEnd mais cela ne fonctionne pas.
Encore une autre question au quelle je ne trouve aucune reponse sur le net. J'aimerai qd l'utilisateur fait une selection soit l'obliger a sélectionner le mot entier ou pouvoir retrouver le mot en entier. Ma solution ct que avec le getSelection Start et GetSelectionEnd. Je pourrais facilement le retrouver dans mon texte avec une fonction recherche dans mon article.
Je vous remercie d'avance.
Firefox 2.0.0.9
jAVASCRIPT
Lire la suite 

Selection de texte »

11 réponses
Réponse
+3
moins plus
regarde celle de CCM !
function insertTag ( txtName, tag, enclose ) {
	var closeTag = ((enclose) ? "</" + tag + ">" : "");
	var Tag = "<" + tag + ">";
	var txtObj = eval ( txtName );
	if (ie==1)
	{
			var str = document.selection.createRange().text;
			txtObj.focus();
		var sel = document.selection.createRange();
			sel.text = Tag + str + closeTag;
			return;
	}
	else
	{
		// position du scroll
		oldPos = txtObj.scrollTop;
		oldHght = txtObj.scrollHeight;

		// position du curseur
		pos = txtObj.selectionEnd + Tag.length + closeTag.length;

		txtObj.value = txtObj.value.substr(0, txtObj.selectionStart) + Tag +
		txtObj.value.substr(txtObj.selectionStart,
		txtObj.selectionEnd-txtObj.selectionStart) +
		closeTag + txtObj.value.substr(txtObj.selectionEnd);

		// repositionnement cuseur aprés la balise fermante
		// peut être grandemant amélioré ;-)
		txtObj.selectionStart = pos;
		txtObj.selectionEnd = pos;

		// calcul et application de la nouvelle bonne postion du scroll
		newHght = txtObj.scrollHeight - oldHght;
		txtObj.scrollTop = oldPos + newHght;
	}
txtObj.focus();
}
Ajouter un commentaire
Réponse
+1
moins plus
salut,

est-ce que tu as réussi à déceler une erreur ?

utilises WebDevelopper pour FireFox si tu veux, il affiches les erreurs de Javascript.
Ajouter un commentaire
Réponse
+0
moins plus
salut,

peux tu nous montrer du code et nous dire où ça coince exactement ?
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
# <script type="text/javascript">
# function getSelectedText(){
# if (window.getSelection){
# var str = window.getSelection();
# }else if (document.getSelection){
# var str = document.getSelection();
# }else {
# var str = document.selection.createRange().text;
# }
# return str;
# }
</script>

function detectMouse(e){
if(parseInt(navigator.appVersion) >=4){
if(navigator.appName == 'Netscape'){
document.getElementById('zone').value = e.pageX ;
document.getElementById('zone1').value = e.pageY;
}
else{
document.getElementById('zone').value = event.x ;
document.getElementById('zone1').value = event.y;
}
}
}

La fonction dectctMouse me donne la position X et Y dans le navigateur mais moi j'aimerai un fonction qui me donne le numero de ligne pour X par exmple et pour Y une position.

Si vous avec une fonction javascript je suis preneur.

Voila merci
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
merci bcp pour ton code mais cela ne fonctionne pas ou j'ai du mal a le faire fonctionner pourrait tu me donner un exemple d'utilisation stp?
Je te remercie d'avance
Ajouter un commentaire
Réponse
+0
moins plus
bonjour,
J'ai un petit pb, je voudrais que qd l'utilisateur qui est sur ma page internet selectionne du texte, je puisse le recupere jusqu'a la tout fonctionne, j'utilise la fonction getSlectedText. Mainterant je voudrais lors de la selection que je puisse mettre des balises au debut de la selection et à la fin. Je sais que avec range et la methode surroundContext ca devrait marcher masi chez moi ca ne focntionne pas.

exemple: toto a faim. si mon utilisateur selectionne toto j'aimerai avoir <titi>toto</titi> a faim.
Je vosu remercie d'avance.
J'utilise javascript et Firefox 2.0.0.9
Voila mon code:

function selection(){
var startNode;
var newNode;


if (window.getSelection){
var str = window.getSelection();
alert (str);
range = document.createRange();
newNode = document.createElement("titi");
node = document.getElementsByTagName("div").item(0);
str.selectNode (node);
str.surroundContents(newNode);
alert (str);
/

}else if (document.getSelection){
var str = document.getSelection();
}else {
var str = document.selection.createRange().text;
}
return str;
}
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
merci de te pencher sur mon pb. Non je n'ai pas d'erreur le seul truc c'est qu'il ne me renvoie pas les balises apres la selection.

function selection(){
var startNode;
var newNode;
var range;

if (window.getSelection){
var str = window.getSelection();
alert (str);
range = document.createRange();
newNode = document.createElement("p");
alert(newNode);
node = document.getElementsByTagName("div").item(0);
alert(node);
range.selectNode(node);
range.surroundContents(newNode);
}else if (document.getSelection){
var str = document.getSelection();
}else {
var str = document.selection.createRange().text;
}
return str;
}
Ajouter un commentaire
Réponse
+0
moins plus
je n'ai pas le temps de m'y pencher davantage pour le; moment mais regarde bien ton code.
je pense que tu ne modifies 'str' nul part dans la première condition.
donc tu le renvoies tel que tu l'as reçu de 'window.getSelection()'.
function selection(){

	var startNode;
	var newNode;
	var range;

	if (window.getSelection){
	
		var str = window.getSelection();
		alert (str);
		
		range = document.createRange();
		newNode = document.createElement("p");
		alert(newNode);
		
		node = document.getElementsByTagName("div").item(0);
		alert(node);
		
		range.selectNode(node);
		range.surroundContents(newNode);

		/* il faudrait mettre le résultat dans 'str', non ? */
		
	}
	else if (document.getSelection){
	
		var str = document.getSelection();
		
	}
	else {
	
		var str = document.selection.createRange().text;
		
	}
	
	return str;
	
}
Ajouter un commentaire
Réponse
+0
moins plus
Bonjour,
Si je modifie mon str je modifie ma selection alors que je ne veux pas modier ma selection je veux modifier le contenu de ma page html avec la fonction surroundContext(). Je sais pas si j'ai ete clair. Si tu vx plus de presision:

<HTML>
<head>
<script>
function selection(){
var startNode;
var newNode;
var range;

if (window.getSelection){
var str = window.getSelection();
alert (str);
range = document.createRange();
newNode = document.createElement("p");
alert(newNode);
node = document.getElementsByTagName("div").item(0);
alert(node);
range.selectNode(node);
range.surroundContents(newNode);
}else if (document.getSelection){
var str = document.getSelection();
}else {
var str = document.selection.createRange().text;
}
return str;
}
</script>
</head>
<body onclick="selection()">
<h4 id="entry1196">Mamam va au marché</h4>
<div>Maman a achete</div>
<ol>
<li>des légumes</li>
<li>des fruits</li>
<li>des biscuits fait maison.</li>
</ol>

</body>
</html>
Si je selection mamam alors je veut obtenir cette page html:

</head>
<body onclick="selection()">
<h4 id="entry1196"><p>Mamam<p> va au marché</h4>
<div>Maman a achete</div>
<ol>
<li>des légumes</li>
<li>des fruits</li>
<li>des biscuits fait maison.</li>
</ol>

</body>
</html>
Ajouter un commentaire
Réponse
+0
moins plus
Merci D'utiliser Les balise

<code>
</code>


!!!
Ajouter un commentaire
Réponse
+0
moins plus
slt je voudrais savoir si qlq sait comment marquer un texte apres que je le selectionne et que je le recupère à l'aide d'une fonction mercie d'avance
Ajouter un commentaire
Ce document intitulé « Selection de texte » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
5 extensions si vous voulez revenir à l'ancien Facebook