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

Qt Quick Discussion :

WebView : onFocus


Sujet :

Qt Quick

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 27
    Par défaut WebView : onFocus
    Salut à tous.

    J'utilise un Webview dans un QML pour afficher une page web.

    Je dois faire apparaitre un clavier virtuel quand on clique sur un champ texte d'une page web, pour cela j'utilise l'event onfocus.

    Cela fonctionne bien sauf pour certaines pages web, comme je n'y connais rien en html je ne vois pas d'où viens le problème.

    Mon code fonctionne très bien ici : http://www.google.com par contre ne fonctionne pas ici : http://www.kigard.fr

    Si vous avez une petite idée, merci de votre aide.

    Voici le code de la Webview :

    Code : 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
     
    WebView {
                id: web_view
                transformOrigin: Item.TopLeft
                url: "http://www.google.com"
                //url: "http://www.kigard.fr"                        
                x: 0
                y: 0
                width: 800
                height: 600
                preferredHeight: height
                preferredWidth: width
                settings.autoLoadImages: true
                settings.javaEnabled: true
                settings.pluginsEnabled: true
                settings.developerExtrasEnabled: true
                smooth: false            
                contentsScale: 1                                 
     
                onLoadFinished{
                    console.log("WebView onLoadFinished")
                    web_view.evaluateJavaScript("var inputs = document.getElementsByTagName('INPUT');var index;for(index=0; index < inputs.length; index++){inputs[index].onfocus = function() {var active=document.activeElement;if(active.type=='text'){window.webbridge.showKeyboard(active.value)}}}")
                }            
     
                javaScriptWindowObjects: QtObject {
                    WebView.windowObjectName: "webbridge"
     
                    function showKeyboard(v)
                    {
                        console.log("valeur "+v)
                    }
                }
            }

  2. #2
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Par défaut
    Bonsoir,

    Si vous modifiez votre ligne evaluateJavaScript en changeant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    web_view.evaluateJavaScript(...
    Par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var res = web_view.evaluateJavaScript(...
    console.log("Result: " + res);
    Que se passe-t-il ? De même, si vous changez :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var active=document.activeElement;if(active.type=='text')
    Par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var active=document.activeElement;if(active && (active.type=='text' || active.type == 'password'))
    Que se passe-t-il ?

    Bonne soirée,
    Louis
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 27
    Par défaut
    J'essaye ça dès demain matin, j'espère que ça m'aidera.

    Merci en tout cas

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 27
    Par défaut
    Voici les résultats :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var res = web_view.evaluateJavaScript("var inputs = document.getElementsByTagName('INPUT');var index;for(index=0; index < inputs.length; index++){inputs[index].onfocus = function() {var active=document.activeElement;if(active.type=='text'){window.webbridge.showKeyboard(active.value)}}}")
                    console.log("Result: "+res)
    avec google cela m'affiche Result: [object Object]

    avec kigard cela m'affiche : Result: undefined

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var res = web_view.evaluateJavaScript("var inputs = document.getElementsByTagName('INPUT');var index;for(index=0; index < inputs.length; index++){inputs[index].onfocus = function() {var active=document.activeElement;if(active && (active.type=='text' || active.type=='password'){window.webbridge.showKeyboard(active.value)}}}")
                    console.log("Result: "+res)
    avec les deux pages web cela m'affiche : Result: undefined

  5. #5
    Rédacteur
    Avatar de Amnell
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2009
    Messages
    1 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2009
    Messages : 1 840
    Par défaut
    Bonjour,

    Vous avez oublié de copier la seconde parenthèse dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(active && (active.type=='text' || active.type=='password')
    =>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(active && (active.type=='text' || active.type=='password'))
    Cela devrait ainsi donner d'autres résultats que undefined.
    Si cela donne la même chose, je pense pouvoir vous proposer autre chose.

    Bonne journée,
    Louis
    N'oubliez pas de consulter la FAQ Qt ainsi que les cours et tutoriels C++/Qt !

    Dernier article : Débuter avec les Enlightenment Foundation Libraries (EFL)
    Dernières traductions : Introduction à Qt Quick - Applications modernes avec Qt et QML
    Vous cherchez un livre sur Qt 5, Qt Quick et QML ? Créer des applications avec Qt 5 - Les essentiels

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 27
    Par défaut
    Arf oui désolé...

    code corrigé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var res = web_view.evaluateJavaScript("var inputs = document.getElementsByTagName('INPUT');var index;for(index=0; index < inputs.length; index++){inputs[index].onfocus = function() {var active=document.activeElement;if(active && (active.type=='text' || active.type=='password')){window.webbridge.showKeyboard(active.value)}}}")
                    console.log("Result: "+res)
    pour google cela me donne : Result: [object Object]

    pour kigard cela me donne : Result: undefined

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Faire fonctionner le onfocus sur un élément en display:none
    Par eXiaNazaire dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/04/2006, 11h10
  2. Réponses: 3
    Dernier message: 20/02/2006, 11h36
  3. onfocus sur un textarea
    Par zimotep dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/01/2006, 11h57
  4. Tester si un input a le focus sans onFocus
    Par Prue dans le forum Général JavaScript
    Réponses: 14
    Dernier message: 29/11/2005, 17h07
  5. Pb firefox onfocus
    Par Coulon Arnaud dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 26/10/2005, 13h55

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