Bonjour,

JE METS CE POST EN ATTENTE

EN EFFET J'AI TROUVE UNE ERREUR QUI INTERROMPAIT LE TRAITEMENT DE CREATION DE LIENS D'EVENEMENT, ALORS INCOMPLET

IL EST POSSIBLE QUE LE PROBLEME N'EXISTE PAS

VERIFICATION EN COURS

______________________________________________________________________________________________________________

Contexte
Je d�veloppe un outil de gestion de documentation qui cr�e des r�f�rences � des �l�ments de textes (marque-pages avec commentaires etc.).
L'application doit fonctionner dans l�environnement PC et mobile et sur tous les navigateurs courants.
Pour cela j'utilise bien bien sur l'objet "selection" r�cup�r� par document.getSelection(), mais aussi selectionChange, la gestion des Range et l'ensemble des objets associ�s, mais aussi, bien sur, les �v�nements d'interface.
La plus grande partie est �crite en JQUERY mais le probl�me pos� n'est pas li� � JQUERY, c'est pour cela que j'utilise ce forum javascript pour la question que je pose.

J'ai r�gl� de tr�s nombreux probl�mes mais je n'arrive pas � r�soudre de mani�re suffisamment satisfaisante le probl�me suivant :

Nature du probl�me

Un click sur un bouton (ou tout �l�ment clickable) en environnement PC ne change pas la s�lection mais son �mulation mobile, elle, si (g�n�re alors un s�lection vide).

En cons�quence il semble impossible de d�finir une interaction utilisateur sur un mobile qui puisse lancer une action qui r�cup�re la s�lection courante sans avoir perdu pr�alablement cette s�lection.


Principe de l'ergonomie pr�vue
Une "zone" (div) affiche le contenu de la s�lection (analys�e) et les donn�es associ�es calcul�es ou � saisir.
Cette zone (volet) peut �tre cach�e et un �l�ment (r�le d'un bouton) recoit le "click" qui demande l'affichage (click ou son �mulation pour un mobile).

Je cherche:
Quel m�canisme adapt� non alambiqu� utiliser pour verrouiller la s�lection quand l'utilisateur a cliqu� pour ouvrir le volet.
(on est en d�but d'ex�cution de la fonction associ�e au onselectionchange, la s�lection a chang� mais le contenu "vide" n'est pas encore r�cup�r� (getselection() non encore ex�cut�)


Si Quelqu'un a une id�e sur la mani�re de traiter ce sujet...

Ensuite j'aurais � traiter le cas de navigateur qui ne prend pas en charge selectionchange, puis ceux des mobiles...
Evidemment je cherche une solution assez globale.

Cordialement

Trebly

Note d�taill�e, compl�ments :
D�tail sur l'ergonomie, on a deux cas utilisateur :
  • Le volet est ouvert en permanence et l'utilisateur voit dynamiquement la s�lection "reconditionn�e" affich�e dans le volet. Quand l'utilisateur a d�cid� de cr�er un r�f�rence il clique un bouton "figer" qui cr�e un Range et les donn�es associ�es, test etc.
  • Le volet est cach� (moins d'espace), un rep�re indique quand une s�lection valide existe, l'utilisateur va alors seulement ouvrir/fermer le volet. La s�lection courante est sens�e rester active lors de l'ouverture/fermeture du volet.

D�tail du probl�me et processus
Dans le cas de l'interface PC (windows) il n'y a aucun probl�me.
En effet le click souris en interface PC ne d�sactive pas la s�lection, le volet s'ouvre et il est possible de "figer" la s�lection (cr�er un "range" d�fini fixe) pour pouvoir remplir les donn�es associ�es.
Dans le cas d'un mobile le click �mul�, lui, d�sactive la s�lection courante.
L'environnement du probl�me
La gestion de la s�lection est effectu�e de deux mani�res suivant que onselectionchange existe ou non pour le navigateur.
Je me limite ici pour l'instant ici � ce cas de l'utilisation de onselectionchange (sur PC le test de la s�lection sur onmouseup fonctionne tr�s bien en absence de selectionchange).
Sur mobile et avec onselectionchange actif (met � jour le contenu d'une variable s�lection et des donn�es) je n'ai pas de solution.
Analyse :
Plusieurs solutions sans issue ? :
  1. Pour cela il faudrait pouvoir tester (simplement) dans le onselectionchange en premi�re instruction si l'�l�ment cibl� dont est issu l'�v�nement est le bouton d'ouverture/fermeture du volet. Si c'est le cas on peut ex�cuter le gel de la s�lection dans l'�tat pr�c�dent.
  2. Je n'ai pas r�ussi, en effet l'�v�nement est tr�s fr�quent et ? je fige l'ex�cution probablement par un arr�t de propagation d'�v�nement.
  3. Ne pas utiliser onselectionchange !!! et d�velopper une nouvelle fonction c'est l'aventure...
  4. Dans tous les cas effectuer le traitement (minimal) sur la selection (sauver le range).
    Dans le d�veloppement actuel j'affiche dans une textarea simplement la s�lection en utilisant window.getSelection().toString().
    Ensuite afficher le range m�moris� et restaurer la s�lection depuis ce range. C'est alambiqu�.