Italian Webview: estrarre dati calcolati da javascript

Discussion in 'Italian Forum' started by Paperinik, Mar 8, 2017.

  1. Paperinik

    Paperinik Member Licensed User

    Buongiorno a tutti,
    in una webview, carico una pagina web che contiene in un form, del codice javascript.
    I dati calcolati da questo codice, alla pressione di un pulsante presente nella pagina stessa, vengono poi inviati al server tramite POST.
    Leggendo il sorgente della pagina vedo ovviamente, solo il codice.

    Nella mia app devo inviare il POST con HttpUtils; come posso fare per estrarre i dati calcolati dal javascript?
    Come alternativa, potrei leggere i dati inviati dal POST successivamente alla pressione del pulsante?
     
  2. MarcoRome

    MarcoRome Expert Licensed User

    Prova a dare un'occhiata a questa libreria WebViewExtra ( la trovi QUI )
     
  3. Paperinik

    Paperinik Member Licensed User

    Un aiutino in più?
    Quale metodo devo usare per leggere i dati di cui ho bisogno?

    Ho già la WebViewExtra installata e caricata nel mio progetto in quanto la uso per leggere il sorgente dalla webview.
     
  4. MarcoRome

    MarcoRome Expert Licensed User

    Paperinik...leggi le 18 paginette del link che ti ho inviato vedrai che qualcosa di interessante lo troverai come ad esempio:

    Code:
    var startmarker = new google.maps.Marker({
           position : 
    latLng,
           
    map : map,
           draggable: 
    true,
           icon : icon1,
           title : Nome
         
    });

      infowindow = new google.maps.InfoWindow({
      content: contentString
      });

      google.maps.event.addListener(startmarker, "click", function() {
           infowindow.open(map,startmarker);
      });

      google.maps.event.addListener(startmarker, "dragend", function() {
           var lat = startmarker.position.lat();
           var lon = startmarker.position.lng();
           var scoord = lat + ":" + lon;
           changeCoordPersona(scoord);
      });


    function changeCoordPersona(scoord) {
            B4A.CallSub("ChangeCoordPersona",true,scoord);
        }
    oppure:
    Code:
    Sub Process_Globals
    End Sub

    Sub Globals
       
    Dim WebViewExtras1 As WebViewExtras
       
    Dim WebView1 As WebView
    End Sub

    Sub Activity_Create(FirstTime As Boolean)
       
    Activity.LoadLayout("layoutMain")
      
       
    '   add the B4A javascript interface to the WebView
       WebViewExtras1.addJavascriptInterface(WebView1, "B4A")
      
       
    '   adding a WebChromeClient will log all browser console message to the android log
       '   so any webpage or javascript errors will be logged
       WebViewExtras1.addWebChromeClient(WebView1, "")
      
       
    '   now load a web page
       WebView1.LoadUrl("http://www.basic4ppc.com/android/forum/threads/getting-the-source-code-of-a-webpage-with-webview-and-webviewextras.34418/#post-202076")
    End Sub

    Sub Activity_Resume
    End Sub

    Sub Activity_Pause (UserClosed As Boolean)
    End Sub

    Sub WebView1_PageFinished (Url As String)
       
    '   Now that the web page has loaded we can get the page content as a String
      
       
    '   see the documentation http://www.basic4ppc.com/forum/additional-libraries-classes-official-updates/12453-webviewextras.html#post70053 for details of the second parameter callUIThread
      
       
    Dim Javascript As String
       Javascript=
    "B4A.CallSub('Process_HTML', false, document.documentElement.outerHTML)"
      

       
    Log("PageFinished: "&Javascript)
       WebViewExtras1.executeJavascript(WebView1, Javascript)
    End Sub

    Sub Process_HTML(Html As String)
       
    '   This is the Sub that we'll get the web page to send it's HTML content to
      
       
    '   Log may truncate a large page so you'll not see all of the HTML in the log but the 'html' String should still contain all of the web page HTML
      
       
    Log("Process_HTML: "&Html)
    End Sub
     
    hatzisn likes this.
  5. Paperinik

    Paperinik Member Licensed User

    Grazie per la risposta Marco, ma io ho letto già tutte le paginette del tread.
    Premesso che purtroppo capisco poco di javascript, non sono riuscito a trovare che mi potesse aiutare.

    Non capisco il codice che mi hai consigliato... il primo mi sembra qualcosa relativo alla geolocalizzazione tramite la webview, il secondo è quello che già utilizzo per leggere il sorgente html della pagina in questione.

    Con quel codice riesco ad ottenere il sorgente javascript, mentre io ho bisogno dei dati elaborati dallo script e successivamente inviati al server con il post
     
  6. MarcoRome

    MarcoRome Expert Licensed User

    E' per farti vedere che in ogni caso puoi eseguire un pò di tutto...se vedi ad un certo punto fa la chiamata:

    Code:
    B4A.CallSub("ChangeCoordPersona",true,scoord);
    dove passa una variabile eseguita nello script ad una sub di B4A
     
  7. hatzisn

    hatzisn Active Member Licensed User

    Non conoscevo questa libreria MarcoRome. Grazie molte per farmi conoscerla e per il tuo esempio.
     
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice