Italian [ risolto ] Iniettare codice java Script

Credo che sia questo il metodo per cercare
<div class="input-group containerSearchBar">
<input id="linkCodeInput" type="text" class="form-control searchBar inputSearchBar" placeholder="Barcode articoli">
<span class="input-group-addon searchBar RequestBtn nip-zoom" id="linkRequestBtn"></span>
</div>

document.getElementById("linkRequestBtn").click();
 
uffa non funziona
troppo bello per essere vero
ho fatto un salto in ufficio perche domani mattina volevo dormire

ecco il codice che ho provato
B4X: Copy
Sub Globals
    Dim WebJava As WebViewExtras
    Private WebView1 As WebView
    Private BtnInietta As Button
    Private EditText1 As EditText
    Private BtnQuit As Button
End Sub

Sub Activity_Create(FirstTime As Boolean)
    Activity.LoadLayout("1")
    WebJava.addWebChromeClient(WebView1, "WebJava")
    WebView1.LoadUrl("http://192.168.1.195/")
End Sub


Private Sub BtnInietta_Click
    Dim StringaJava As String="document.getElementById('linkCodeInput').value='" & EditText1.Text.Trim & "';"
    WebJava.executeJavascript(WebView1,StringaJava)
    WebJava.executeJavascript(WebView1,"document.getElementById('linkRequestBtn').click();")

End Sub

Private Sub BtnQuit_Click
    Activity.Finish
    ExitApplication
End Sub

ecco il log di errore

Uncaught TypeError: Cannot set properties of null (setting 'value') in http://192.168.1.195/it-IT/Profimax/IndexPda (Line: 1)
Uncaught TypeError: Cannot read properties of null (reading 'click') in http://192.168.1.195/it-IT/Profimax/IndexPda (Line: 1)
 
Con il telefono, ho scaricato la pagina in html, e credo che i controlli da popolare e da usare come click siano questi

B4X: Copy
<form id="formInputFieldLink" class="formInputField" method="get">
            <input type="text" class="inputTextLink">
            <div class="searchContainer searchButtonNoIE fa nip-zoom nip-2x">
                <input type="image" class="searchButtonLink" src="http://192.168.1.195/Content/Images/Pda/SearchIcon.gif">
            </div>
        </form>
Ma non so come trasformarlo in javascript iniector
 
il pezzetto di codice funziona.

ho detto: "a seconda del codice ..."
l'elemento linkRequestBtn non e' un botone, ma uno "span". metti un botone (chiamato linkRequestBtn) e prova.
prima, non so se uno span e cliccabile (ho da fare un po' di ricerca), ma non lo credo. secondo, al minimo devi aggiungere un
"listener" (si', esistono anche in javascript). un botone ha gia il suo listener, capisci? un elemento che non sia un botone non en ha.
e necesario aggiungere uno. quindi, parliamo di piu di codice a iniettare... e molto piu facile se linkRequestBtn fosse un vero botone.
 

Attachments

  • 1.png
    1.png
    5.3 KB · Views: 536
  • 2.png
    2.png
    20.5 KB · Views: 535
Last edited:
risolto, risolto,risolto

ecco il mio codice funzionante
B4X: Copy
Log("prova iniector")
    'getElementsByClassName()
    WebJava.executeJavascript(WebView1,"document.getElementsByClassName('inputTextLink')[0].value='0000080177609';")
    WebJava.executeJavascript(WebView1,"document.getElementsByClassName('searchButtonLink')[0].click();")
adesso posso andare a dormire

grazie mille @drgottjr , @LucaMs
 
scusate, so che avevo messo risolto,
adesso dovrei leggere questo valore
come posso leggerlo?

la risposta dovrebbe essere o cosi, se non trova l'articolo,
<div id="dataResponseLink" class="dataResponse operationFeedbackKO" style="display: block;">
<span>Articolo non trovato</span>
</div>

oppure cosi se lo trova
<div id="dataResponseLink" class="dataResponse operationFeedbackOK" style="display: block;">
<span>Articolo trovato</span>
</div>
 
utilizato questo stratagemma ( accrocchio)

B4X: Copy
    WebViewExtras1.executeJavascript(WebView1,$"document.getElementsByClassName('inputTextLink')[0].value=${cResultcode};"$)
    WebViewExtras1.executeJavascript(WebView1,"document.getElementsByClassName('searchButtonLink')[0].click();")
        Sleep(900)
        Dim Javascript As String
        Javascript="B4A.CallSub('Process_HTML', false, document.documentElement.outerHTML)"
        WebViewExtras1.executeJavascript(WebView1, Javascript)
        
Sub Process_HTML(Html As String)
    Html.GetBytes("UTF8")
    Dim pos As Int = Html.IndexOf("operationFeedbackKO")
    Log(pos)
    If pos >1 Then   ' ko non trovato'
        PlaySound(5)
    Else     ' trovato'
        PlaySound(4)
    End If
End Sub
 
quando di un elemento hai un ID ti conviene sempre usare quello
Nel tuo caso, per leggere la risposta farai:
Code: Copy
JavaScript = "B4A.CallSub('Process_HTML', false, document.getElementById('dataResponseLink').innerText)"
 
Last edited:
quando di un elemento hai un ID ti conviene sempre usare quello
Nel tuo caso, per leggere la risposta farai:
risposta = document.getElementById('dataResponseLink').innerText;
Scusami, quindi cosi:
Javascript= "document.getElementById('dataResponseLink').innerText;"


Risposta =WebViewExtras1.executeJavascript(WebView1, Javascript)
 
Back
Top