WebView Javascript submit.click();

  • 3 Antworten
  • Letztes Antwortdatum
H

HammerH

Neues Mitglied
0
Hallo Leute,

ich habe folgendes Problem. Ich will, mit ner WebView eine Seite aufrufen und mich da einloggen. Da die Seite keine Cookies speichert, würde ich per Javascript die Tabellen füllen und dann einloggen.
WebView funktioniert einwandfrei. Username und Passwort werden auch richtig in die dafür vorgesehenen Felder eingetragen. Nur der submit funktioniert nicht und ich komm einfach nicht drauf.

Hier mal der Code:

@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);
ladeText.setVisibility(View.GONE);
progressBar.setVisibility(View.GONE);
webview.loadUrl("javascript: {" +
"document.getElementById('uname').value = '"+username +"';" +
"document.getElementById('pwd').value = '"+password+"';" +
"document.getElementById('submit').click(); };");

}

Die ID von dem Button ist auch wirklich submit. Wenn ich das hier in die Google Chrome console auf der seite eingebe und noch dementsprechend anpasse, funktioniert es auch ...

Wäre sehr dankbar über jegliche Hilfe.

Liebe Grüße,

HammerH
 
Hallo

Unabhängig ob das jetzt evtl. ein Problem des Webview ist oder eine Besonderheit von Chrome ist, etc.

Wenn ich über JS ein Fomular absenden will, mach ich immer dies immer so:

Code:
document.getElementById("IdDesFormTag").submit();
 
Zuletzt bearbeitet:
Also die HTML sieht so aus:

<div data-role="page" id="login">
<div data-role="content" data-inset="true" data-theme="a">
<form id="LoginForm" method="post">
<div data-role="fieldcontain">
<label for="uname"><strong>Benutzername</strong></label>
<input type="email" name="uname" id="uname" value="" />
<label for="pwd"><strong>Passwort</strong></label>
<input type="password" name="pwd" id="pwd" value="" />
<a id="submit" href="#" type="submit" data-role="button" data-theme="b">Anmelden</a>
<div id="notification" class="ui-body ui-body-a"></div>
<h5>Passwort vergessen <a href="docs/help.php">Hilfe kontaktieren</a></h5>
</div>
</form>
</div>
</div> </div>


Wenn ich dich richtig verstanden habe, hätte ich anstatt den blabla('submit').click();
schreiben sollen:

document.getElementById('LoginForm').submit();



Das geht aber irgendwie auch nicht :/ mach ich was falsch?
 
Hallo

Sieht erstmal ganz richtig aus.

Aber eine andere Frage:
Hast du die Stelle ab "webview.loadUrl(...)" selbst so entworfen oder hattest du irgendwo ein konkretes Beispiel?

Wenn ich mir hier bei der Methode addJavaScriptInterface das Beispiel anschaue, schaut es ganz richtig aus. Ich erkenne um diese Uhrzeit zumindest keine Fehler.

Sicher, dass es sich hierbei nicht um ein Autofill handelt? Hast du Testweise mal anderen Daten verwendet?

Bau doch davor und danach jeweils ein "alert();" ein um zu testen, ob dein JS evtl. wegen eines Syntaxerrors abbricht.

Ist denn JavaScript aktiviert?
Code:
webview.getSettings().setJavaScriptEnabled(true);
Alternativer Lösungsweg:

Übertrage die Daten wir Username und Passwort gleich in der URL als GET-Parameter und schreibe den JS-Teil direkt in den Quellcode der HTML-Seite.



Und nachdem ich das alles geschrieben habe ist mir nochwas aufgefallen:
Du hast keinen Submit-Button. Lediglich einen a-Tag. Mir war nicht bekannt, dass man auch mit einem a-Tag ein Formular absenden kann.
Genauso ist mir der '<input type="email"' unbekannt.

Kann es sein, dass du in deimen Code HTML5 verwendest, aber die Webview deiner Android-Version dies (noch) nicht beherrscht?
Evtl. hilft es einen WebChromeClient zu setzen.

Wenn das alles nicht hilft, weiß ich erstmal auch nicht weiter.
 
Zurück
Oben Unten