Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. QML and Qt Quick
  4. EvaluateJavaScript
Forum Update on Monday, May 27th 2025

EvaluateJavaScript

Scheduled Pinned Locked Moved QML and Qt Quick
8 Posts 4 Posters 10.6k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Offline
    P Offline
    puelocesar
    wrote on 27 Sept 2010, 19:52 last edited by
    #1

    Hi, everybody! I just installed here Qt 4.7 SDK, but I'm having a problem with WebView. I want to test the method evaluateJavaScript, but I just can't get it to work. Here is my code:

    @
    import Qt 4.7
    import QtWebKit 1.0

    Rectangle {
    id: rect
    width: 700
    height: 500

    WebView {
        id: webview
        anchors.fill: parent
        url: "http://www.google.com"
    
        onLoadFinished: {
            console.log("loaded.");
            evaluateJavaScript("alerta('test!')")
        }
    }
    

    }
    @

    Any tip on what I'm doing wrong?

    ps: I'm running it on Qt Creator on Windows 7 64bits
    ps2: I know the js call "alerta" is wrong, but this forum won't let me save this post with the correct name, saying that I'm a spammer if I do that

    1 Reply Last reply
    0
    • P Offline
      P Offline
      puelocesar
      wrote on 27 Sept 2010, 20:06 last edited by
      #2

      Update: I made evaluateJavaScript work, but only when calling predefined js methods:

      @webview.evaluateJavaScript("window.qml.qmlCall()")@

      So, any tips on why can't I call default html/js methods like alert or document.getElementById?

      1 Reply Last reply
      0
      • M Offline
        M Offline
        mbrasser
        wrote on 28 Sept 2010, 04:32 last edited by
        #3

        Hi,

        In the alert case, the onAlert signal handler of the WebView should be called. If you add
        @onAlert: console.log(message)@
        To the WebView in the code above, are you able to get the correct output?

        Regards,
        Michael

        1 Reply Last reply
        0
        • 2 Offline
          2 Offline
          2beers
          wrote on 28 Sept 2010, 10:04 last edited by
          #4

          hi. I think the problem is this:

          @evaluateJavaScript("alerta('test!')")@

          if should be alter not alerta

          @evaluateJavaScript("alert('test!')")@

          1 Reply Last reply
          0
          • P Offline
            P Offline
            puelocesar
            wrote on 28 Sept 2010, 12:59 last edited by
            #5

            Hi 2beers. I know it's wrong, but when I tried to create this forum post with the "alert" word, the system said it was a SPAM, and did not let me save it. That's why I wrote "alerta"

            1 Reply Last reply
            0
            • P Offline
              P Offline
              puelocesar
              wrote on 28 Sept 2010, 13:04 last edited by
              #6

              [quote author="mbrasser" date="1285648352"]Hi,

              In the alert case, the onAlert signal handler of the WebView should be called. If you add
              @onAlert: console.log(message)@
              To the WebView in the code above, are you able to get the correct output?

              Regards,
              Michael[/quote]

              That worked! But I still can't use other methods, like getElementById, like this:
              @evaluateJavaScript("document.getElementById('body') . innerHTML = 'aaaa'")@

              Just to be sure, I ran this on Firebug, and it works on www.google.com:
              @document.getElementById('body') . innerHTML = 'aaaa'@

              But it doesn't work with evaluateScript

              1 Reply Last reply
              0
              • M Offline
                M Offline
                mbrasser
                wrote on 29 Sept 2010, 23:56 last edited by
                #7

                I'm not sure what's happening. You could try the same test in QWebFrame (from C++) to see if it works as expected there (WebView just forwards the evaluation to it's internal QWebFrame)

                1 Reply Last reply
                0
                • A Offline
                  A Offline
                  aflegg
                  wrote on 29 Dec 2011, 11:53 last edited by
                  #8

                  Did you ever get evaluateJavaScript working with document.getElementById?

                  I have:

                  @console.log("document = " + webView.evaluateJavaScript("document"))
                  console.log("field = " + webView.evaluateJavaScript("document.getElementById('txtDefaultLastName')"))
                  console.log("value = " + webView.evaluateJavaScript("document.getElementById('txtDefaultLastName').value"))@

                  ...and get:

                  @document = [object Object]
                  field = undefined
                  value = undefined@

                  1 Reply Last reply
                  0

                  • Login

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • Users
                  • Groups
                  • Search
                  • Get Qt Extensions
                  • Unsolved