Selection de texte

kanakus Messages postés 22 Statut Membre -  
 sam -
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

11 réponses

Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
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();
}
3
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
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.
1
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
salut,

peux tu nous montrer du code et nous dire où ça coince exactement ?
0
kanakus
 
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
kanakus
 
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
0
kanakus Messages postés 22 Statut Membre 4
 
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;
}
0
kanakus Messages postés 22 Statut Membre 4
 
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;
}
0
Dalida Messages postés 7114 Date d'inscription   Statut Contributeur Dernière intervention   923
 
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;
	
}
0
kanakus Messages postés 22 Statut Membre 4
 
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>
0
Profil bloqué
 
Merci D'utiliser Les balise

<code>
</code>


!!!
0
sam
 
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
0