Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 02/02/2011, 13h17   #1
Rédacteur
 
Avatar de Stessy
 
Homme Stessy Delcroix
Senior Software Engineer JEE
Inscription : avril 2002
Messages : 744
Détails du profil
Informations personnelles :
Nom : Homme Stessy Delcroix
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Senior Software Engineer JEE
Secteur : Finance

Informations forums :
Inscription : avril 2002
Messages : 744
Points : 1 092
Points : 1 092
Par défaut [IE] Click droit - Paste valeur insérée après l'appel de fonction

Bonjour,

je vous explique mon problème.

J'ai une fonction javascript qui est exécutée lors d'event (blur, paste, keyup, input)

Jusque là pas de soucis.

Le problème survient lors de l'utilisation d'un event avec IE. Cet event c'est le "click-droit paste".

La donnée est réellement inserée dans le champs après que la fonction ait été exécutée. Ce qui en résulte que cette fonction ne se terminera pas correctement vu qu'au moment de l'exécution, le champs est toujours vide.

Un fois que la fonction est terminée, on voit apparaître clairement la donnée du clipboard dans le champs. J'ai effectué ce test en affichant des alert avant et après l'exécution de la fonction.

Je pensais avoir résolu ce problème en insérant la donnée du clipboard dans le champs via la fonction clipboard de JS.

Code :
$("#pic_main" + participantId).val(window.clipboardData.getData("Text"));
Cela fonctionne très bien, excepté lorsqu'une policy group est effective au niveau du domaine, empechant la lecture du clipboard.

Voici la portion de code qui pose problème

Code javascript :
1
2
3
4
5
6
7
8
9
10
$("#pic_main" + participantId).bind('paste keyup input blur', function(e)
    {
        //alert(e.type);
        //alert("Particpant ID: "+participantId + "\n" + navigator.userAgent + "\n" + e.type + "\n" + window.clipboardData.getData("Text"));
        if (navigator.userAgent.indexOf("MSIE") != -1 && e.type == 'paste')
            $("#pic_main" + participantId).val(window.clipboardData.getData("Text"));
        //alert("call checkPic");
        checkPic('picProposal?action=picAJAX', participantId);
        //alert("checkPic called");
    });

En décommentant les alert, on voit clairement que l'insertion de la donnée est effectuée après le message d'alerte ("checkPic called").

Quelqu'un a-t-il déjà rencontré le problème ??

Y aurait-il une solution autre que la fonction clipboardData ??

Est-ce normal que l'insertion de la donnée dans le champs soit effectuée juste avant que la fonction soit terminée?

Pourquoi ne le fait-il pas directement, dès que l'event "paste" est catché ??

Merci d'avance pour vos réponses.
__________________
Langages : Java, SQL
Outils : Eclipse, Intellij
SGBD : Oracle, PostgreSQL
Mes Articles
Stessy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/02/2011, 14h07   #2
Rédacteur
 
Avatar de Stessy
 
Homme Stessy Delcroix
Senior Software Engineer JEE
Inscription : avril 2002
Messages : 744
Détails du profil
Informations personnelles :
Nom : Homme Stessy Delcroix
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Senior Software Engineer JEE
Secteur : Finance

Informations forums :
Inscription : avril 2002
Messages : 744
Points : 1 092
Points : 1 092
Bon he bien la seule chose à faire est d'utiliser le setTimeout et démarrer la fonction avec une milliseconde de retard.

Code javascript :
window.setTimeout(function(){checkPic('picProposal?action=picAJAX', participantId);},1);
__________________
Langages : Java, SQL
Outils : Eclipse, Intellij
SGBD : Oracle, PostgreSQL
Mes Articles
Stessy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h28.


 
 
 
 
Partenaires

Hébergement Web