IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

TWebBrowser ne déclenche pas l'évènement onclick


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 287
    Points : 164
    Points
    164
    Billets dans le blog
    1
    Par défaut TWebBrowser ne déclenche pas l'évènement onclick
    Bonjour,

    Je suis sous Delphi 6 Personal Edition. J'utilise le contrôle TWebBrowser pour gérer un browser type Internet Explorer dans une fenêtre application. Je charge une petite page HTML contenant du JavaScript. Tout cela marche bien.

    Mais:
    La page HTML contient des boutons, chacun avec un évènement onclick. Et dans TWebBrowser, cet évènement n'est jamais déclenché. Or, la page, chargée directement dans Internet Explorer, fonctionne parfaitement - les boutons sont réactifs et le conde onclick est bien exécuté.

    Comment dire à TWebBrowser d'effectuer les évènements onclick ? Voici la page HTML qui fonctionne parfaitement dans Internet Explorer:
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <!DOCTYPE html>
    <html>
    <body onload="charger()">
     
    <script>
    function charger()
             {
             var i;
             var s;
             for (i=1072;i<1100;i++)
                 {
                 var x=document.createElement("INPUT");
                 x.setAttribute("type", "button");
                 s=String.fromCharCode(i);
                 x.setAttribute("value", s);
                 x.name=s;
                 document.body.appendChild(x);
                 x.onclick=function() {myFunction()};
                 }
             }
     
    function myFunction()
             {
                     alert('coucou');
             var y=event.target.name;
             var z=document.getElementById("fname").value;
             document.getElementById("fname").value = z+y;
             }
     
    </script>
     
    <br>
    <br>
     
    <input type="text" id="fname">
     
    </body>
    </html>
    Dans TWebBrowser, le message "coucou" n'est jamais affiché !

  2. #2
    Membre habitué

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 287
    Points : 164
    Points
    164
    Billets dans le blog
    1
    Par défaut
    J'ai avancé dans mon analyse du problème. Maintenant, on rentre bien dans la fonction appelée par l'évènement onclick, mais il y a alors une erreur en exécution du javascript:
    Nom : aa1.png
Affichages : 266
Taille : 12,1 Ko
    En pièce jointe, il y a un fichier ZIP qui contient l'ensemble des sources et exécutables nécessaires, essentiellement:
    Project1 = programme de test
    test = dll appelée par Project1, contenant une seule procédure WBtest

    Le programme Project1 a un seul bouton, un peu vers la droite, qui va créer le TWebBrowser dynamiquement et naviguer les le fichier htm en question. Je précise que ce fichier, chargé par Internet Explorer, marche parfaitement bien.

    Pourquoi TWebBrowser n'aime-t-il pas ce petit code, pourtant compatible IE ? Le message d'erreur se produit sur la toute première ligne de la routine évènement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var y=event.target.name;
    Fichiers attachés Fichiers attachés

  3. #3
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par KlausGunther Voir le message
    Je précise que ce fichier, chargé par Internet Explorer, marche parfaitement bien.

    Pourquoi TWebBrowser n'aime-t-il pas ce petit code, pourtant compatible IE ? Le message d'erreur se produit sur la toute première ligne de la routine évènement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var y=event.target.name;
    AMHA, cela vient du fait que vous utilisez un IE 9+, mais le contrôle TWebBrowser utilise IE en mode compatible IE7 par défaut... et qu'avec IE7 (en fait IE8 !) et antérieur, ce fichier js.htm déclenche une exception sur l'objet event.
    Il faut donc indiquer au contrôle d'outrepasser ce mode pour votre application.
    Microsoft donne plus d'explications ici : https://msdn.microsoft.com/library/ee330730.aspx
    Philippe.

  4. #4
    Membre habitué

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 287
    Points : 164
    Points
    164
    Billets dans le blog
    1
    Par défaut
    Merci beaucoup ! C'est une information intéressante.

    Pour confirmation: il faudra bien que je mette la valeur 9000 (0x2328) ou supérieur dans la clé
    HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
    SOFTWARE
    Microsoft
    Internet Explorer
    Main
    FeatureControl
    FEATURE_BROWSER_EMULATION
    contoso.exe = (DWORD) 00009000

    à la place de la valeur 00009000 montrée dans le texte ?

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/06/2011, 23h31
  2. L'évènement onclick ne fonctionne pas
    Par beegees dans le forum jQuery
    Réponses: 4
    Dernier message: 09/01/2011, 18h55
  3. Réponses: 3
    Dernier message: 06/01/2009, 19h27
  4. L'évènement onclick ne lance pas mon script
    Par beegees dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 02/10/2008, 11h49
  5. Évènement onclick qui ne fonctionne pas avec FireFox
    Par kilian67 dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 19/09/2008, 11h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo