begin process at 2012 05 28 14:09:40
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > OUTIL DE SÉLECTION

OUTIL DE SÉLECTION


 Information sur la source

Note :
Aucune note
Catégorie :Trucs & Astuces Classé sous :sélection, code html, cross-browser, contenu, select Niveau :Initié Date de création :31/12/2009 Date de mise à jour :07/01/2010 00:04:52 Vu :3 056

Auteur : jdmcreator

Ecrire un message privé
Site perso
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Cette fonction, que j'agrandirai au fur et à mesure de mes découvertes permet d'accéder à certaines informations sur la sélection : le tout cross-browser (Firefox, IE, Safari, Opéra et Maxthon).

Les fonctions présentes pour l'instant :

- selection.getText() --> Retourne le texte de la sélection
- selection.getHtmlText() --> Retourne le code HTML de la sélection
- selection.clean() --> Retourne le code HTML de la sélection avec les éléments non-voulus supprimé
- selection.isText() --> Retourne si le texte de la sélection est du texte (true) ou s'il comporte du HTML (false) --> Non cross-browser

Exemples et informations ici : http://jdmcreator.110mb.com/source/selection.html

Source

  • var selection=new selectionObject();
  • function selectionObject(){
  • this.getHtmlText=function(){
  • if(document.selection)
  • {
  • return document.selection.createRange().htmlText
  • }
  • var selection2 = window.getSelection();
  • var range = selection2.getRangeAt(0);
  • if (range) {
  • var div = document.createElement('div');
  • div.appendChild(range.cloneContents());
  • return div.innerHTML;
  • }
  • };
  • this.getText=function(){
  • return (!!document.getSelection) ? document.getSelection() :
  • (!!window.getSelection) ? window.getSelection() :
  • document.selection.createRange().text;
  • }
  • this.onCopy=function(wh,tn,yn,yn2){
  • if(wh=="disabled" && tn==undefined){
  • document.body.setAttribute("onCopy","return false;");return true
  • }
  • if(wh=="disabled" && tn!=undefined){
  • tn.setAttribute("onCopy","return false;");return true;
  • }
  • if(wh=="enabled" && tn==undefined){
  • document.body.setAttribute("onCopy","return true;");return true;
  • }
  • if(wh=="enabled" && tn!=undefined){
  • tn.setAttribute("onCopy","return true;");return true;
  • }
  • if(wh=="copyIn"){
  • document.body.setAttribute("onCopy","selection.copyIn('"+tn+"','"+yn+"');return "+yn2+";");return true;
  • }
  • }
  • this.copyIn=function(tn,yn){
  • eval(tn+"='"+this.getHtmlText()+"';");
  • if(yn!=undefined){
  • eval(yn);
  • }
  • }
  • /* Mettez comme arguments les nombres suivant selon les éléments que vous voulez supprimé :
  • 1 N½ud élément
  • 2 N½ud attribut
  • 3 N½ud texte
  • 4 N½ud pour passage CDATA
  • 5 N½ud pour référence d'entité
  • 6 N½ud pour entité
  • 7 N½ud pour instruction de traitement
  • 8 N½ud pour commentaire
  • 9 N½ud document
  • 10 N½ud type de document
  • 11 N½ud de fragment de document
  • 12 N½ud pour notation
  • 13 N½ud élément mais avec vérification supplémentaire pour garder les commentaires
  • */
  • this.clean=function(wh){
  • if(!document.all){
  • var selection2 = window.getSelection();
  • var range = selection2.getRangeAt(0);
  • if (range) {
  • var div = document.createElement('div');
  • div.appendChild(range.cloneContents());
  • }
  • else
  • {
  • var div = document.createElement('div');
  • div.innerHTML=document.selection.createRange().htmlText;
  • }
  • for(var j=0;j<this.clean.arguments.length;j++){
  • ty=this.clean.arguments[j];
  • for(var i=0;i<startCall(div).length;i++){
  • tn=startCall(div)[i];
  • if(tn.parentNode==null){
  • continue;
  • }
  • if(tn.tagName=="IMG"){
  • alert(tn.tagName+"|"+tn.nodeType);
  • }
  • if(tn.nodeType==ty && ty!=13){
  • startCall(div)[i].parentNode.removeChild(startCall(div)[i]);
  • }
  • if(ty==13 && tn.nodeType==1 && tn.nodeName!="comment"){
  • startCall(div)[i].parentNode.removeChild(startCall(div)[i]);
  • }
  • }
  • }
  • }
  • return div.innerHTML;
  • }
  • this.isText=function(ty){
  • if(this.getHtmlText()==""){
  • if(ty==undefined){
  • return null;
  • }
  • return ty;
  • }
  • tn=document.createElement("div");
  • try{
  • tn.innerText=this.getText();
  • }
  • catch(e){
  • tn.textContent=this.getText();
  • }
  • return tn.innerHTML==this.getHtmlText();
  • }
  • }
  • function startCall(quoi){
  • startCall_arr=new Array();
  • appel(quoi);
  • return startCall_arr;
  • }
  • function appel(quoi)
  • {
  • startCall_arr.push(quoi);
  • for ( var n=0; n<quoi.childNodes.length; n++ )
  • {
  • appel(quoi.childNodes[n]);
  • }
  • }
var selection=new selectionObject();
function selectionObject(){

this.getHtmlText=function(){
if(document.selection)
{
return document.selection.createRange().htmlText
}
   var selection2 = window.getSelection(); 
   var range = selection2.getRangeAt(0); 
   if (range) { 
     var div = document.createElement('div'); 
     div.appendChild(range.cloneContents()); 
    return div.innerHTML; 
   } 

};

this.getText=function(){
return (!!document.getSelection) ? document.getSelection() :
	       (!!window.getSelection)   ? window.getSelection() :
	       document.selection.createRange().text;
}

this.onCopy=function(wh,tn,yn,yn2){
if(wh=="disabled" && tn==undefined){

document.body.setAttribute("onCopy","return false;");return true


}
if(wh=="disabled" && tn!=undefined){
tn.setAttribute("onCopy","return false;");return true;

}

if(wh=="enabled" && tn==undefined){

document.body.setAttribute("onCopy","return true;");return true;

}
if(wh=="enabled" && tn!=undefined){

tn.setAttribute("onCopy","return true;");return true;

}

if(wh=="copyIn"){
document.body.setAttribute("onCopy","selection.copyIn('"+tn+"','"+yn+"');return "+yn2+";");return true;

}



}

this.copyIn=function(tn,yn){
eval(tn+"='"+this.getHtmlText()+"';");

if(yn!=undefined){
eval(yn);
}
}


/* Mettez comme arguments les nombres suivant selon les éléments que vous voulez supprimé :

1	N½ud élément
2	N½ud attribut
3	N½ud texte
4	N½ud pour passage CDATA
5	N½ud pour référence d'entité
6	N½ud pour entité
7	N½ud pour instruction de traitement
8	N½ud pour commentaire
9	N½ud document
10	N½ud type de document
11	N½ud de fragment de document
12	N½ud pour notation
13	N½ud élément mais avec vérification supplémentaire pour garder les commentaires


*/
this.clean=function(wh){

if(!document.all){
   var selection2 = window.getSelection(); 
   var range = selection2.getRangeAt(0); 
   if (range) { 
     var div = document.createElement('div'); 
     div.appendChild(range.cloneContents()); 

}
else
{
     var div = document.createElement('div'); 
div.innerHTML=document.selection.createRange().htmlText;
}

for(var j=0;j<this.clean.arguments.length;j++){

ty=this.clean.arguments[j];
for(var i=0;i<startCall(div).length;i++){
tn=startCall(div)[i];
if(tn.parentNode==null){
continue;
}
if(tn.tagName=="IMG"){
alert(tn.tagName+"|"+tn.nodeType);
}
if(tn.nodeType==ty && ty!=13){

startCall(div)[i].parentNode.removeChild(startCall(div)[i]);

}
if(ty==13 && tn.nodeType==1 && tn.nodeName!="comment"){
startCall(div)[i].parentNode.removeChild(startCall(div)[i]);
}



}
}


}

return div.innerHTML;

}

this.isText=function(ty){

if(this.getHtmlText()==""){

if(ty==undefined){

return null;
}

return ty;
}

tn=document.createElement("div");

try{

tn.innerText=this.getText();

}
catch(e){
tn.textContent=this.getText();
}


return tn.innerHTML==this.getHtmlText();

}

}

function startCall(quoi){
startCall_arr=new Array();
appel(quoi);



return startCall_arr;
}
	function appel(quoi)
	{

			

			startCall_arr.push(quoi);

			for ( var n=0; n<quoi.childNodes.length; n++ )
			{	
				appel(quoi.childNodes[n]);
			
			
		}

	}

 Conclusion

Plusieurs fonctions à venir. Les 2 fonctions de base (getText et getHtmlText) en-haut ne sont pas de moi. J'ai toutefois légèrement modifié la fonction getHtmlText() pour la rendre compatible avec IE, ce qui n'a pas été très difficile '^^ . Merci à Bul3 pour la fonction appel(). Particulièrement utile pour un tas de script et d'application web ;)

La fonction getHtmlText() vient d'ici : http://groups.google.com/group/mozilla.dev.tech.do m/browse_thread/thread/7ecbbb066ff2027f

Pour plus d'information ainsi que des exemples, merci de visiter la page du projet sur mon site web : http://jdmcreator.110mb.com/source/selection.html


 Historique

31 décembre 2009 21:07:11 :
J'ai rajouté l'origine des fonctions
07 janvier 2010 00:04:52 :
Rajout de fonctions et d'un lien vers des exemples

 Sources du même auteur

Source avec Zip JDMATH-MINI.JS : GÉNÉRATION D'EXPRESSION MATHÉMATIQUE
PARSER LES CARACTÈRES HTML D'UNE STRING
Source avec Zip TIMER : SETTIMEOUT & SETINTERVAL AMÉLIORÉS
RÉPÉTER UN VIDÉO YOUTUBE EN JAVASCRIPT À L'AIDE D'UN MARQUE-...
Source avec Zip 20 ASTUCES POUR PROGRAMMEURS JAVASCRIPT AVANCÉS

 Sources de la même categorie

PARSER LES CARACTÈRES HTML D'UNE STRING par jdmcreator
CONSTRUCTION D'UNE TABLE TRIABLE À PARTIR D'UN TABLEAU 2D par phm
Source avec Zip Source avec une capture SUBDIVISER LE RÉSULTAT D'UNE RECHERCHE EN PAGES par kimmp
Source avec Zip TIMER : SETTIMEOUT & SETINTERVAL AMÉLIORÉS par jdmcreator
Source avec Zip Source avec une capture ONGLETS ET CHANGEMENT INSTANTANÉ DE LA LANGUE par william voirol

 Sources en rapport avec celle ci

SELECTS DÉPENDANTS PRÉ-CHARGÉS D'UNE SEULE OPTION par phm
Source avec Zip EZEDITTABLE par koalyptus
Source avec Zip PERMETTRE LA SÉLECTION DU TEXTE PAR L'UTILISATEUR par jdmcreator
Source avec une capture CHARGER UNE PAGE WEB DANS UN DIV par flk974
Source avec Zip Source avec une capture FARMVILLE - HEURE ET COMBO LIST IMAGES par ym_trainz

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

forcer 1 seule sélection d'option dans 1 select [ par esse ] bonjour,j'ai une liste &lt;select&gt; dont je souhaiterais forcer la sélection sur 1 seul des &lt;option&gt;... pour ensuite ne pouvoir déplacer que l Netscape, Select et Tableau [ par bavmorda ] Bonjour,J'ai une liste (select) dans un tableau (pour des soucis de mise en forme). Ce Select contient 1 item à l'ouverture de la page. Le contenu est [form / select] Affichage d'un contenu après une selection dans un champ select [ par wighie ] Bonjour, J'ai un champ qui contiens une liste de "publications", chaque publication se compose d'une référence et d'un descriptif (texte + couvertur Pb pour recuperer le contenu d'un form/select sous PHP [ par MarcStrup ] Bonjour,Le pb est le suivant :- Pour recuperer le contenu d'une liste (form/select de type liste), je dois nommer le select sous le forme 'monselect[] Remplacer le contenu HTML d'une page [ par mgroleau ] Bonjour,J'aimerais connaître la procédure pour remplacer dynamiquement avec un Script Javascript le contenu HTML d'une page Web, afin d'y afficher aut Manipuler un Menu Select (combo.) [ par syndrael ] Bonjour,Je cherche un moyen pour effacer la premièer ligne d'un Menu Select (ou combo). Voici mon code mais j'ai une erreurfor (i=1;i&lt;ZeSelect.opti Contenu dynamique [ par bside8 ] Bonjour,je voudrais, avec des flèches '-' et '+' incrémenter ou décrémenter dynamiquement une valeur :- valeur +Comment je dois m'y prendre ?Merci Problème de compatibilié avec Netsape [ par thebigbang ] bonjour à vous, j'ai ce code js qui tourne bien sous IE, mais sous netscape ce ne marche pas du tout.L'argument select représente un select sur la pag écrire le contenu d'un fichier texte dans une page [ par DJDX ] j'ai essayer avec :window.location = ("1.txt"); le résultat, ça marche, mais je peux seulement mettre un fichier par page.document.write(wind help [ par syphaxx ] bjr tt le monde, dans une page html j'ai un composant de type "select", en desous il y a un tableau (table), je voudrais que selon la valeur du select


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,950 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales