Programmatisch füllen Sie die Daten, die in einer UIWebview
In meiner app, ich möchte in der Lage sein, den Benutzer, geben Sie Ihre login-Informationen in einer benutzerdefinierten Ansicht und dann zeigen ein UIWebView. Ich will die UIWebView programmgesteuert gefüllt mit Benutzername und Passwort. Dann die UIWebView sollte programmgesteuert klicken Sie auf die Schaltfläche "login". Ich habe versucht:
[webView stringByEvaluatingJavaScriptFromString:@"document.L_lbsc_txtUserName.text.value='ANdrew';"];
aber es funktioniert nicht. Ich weiß wirklich nicht verstehen, wie stringByEvaluatingJavaScriptFromString
funktioniert oder was es ist entworfen, um zu tun.
Ich denke, dass es vielleicht etwas zu tun mit dem, was ich füllte in das string-Feld oben.
Hier ist der Quell-code der website, die ich versuche, Zugriff:
<div class="lgntxt">
<div style="padding-left:3px;">
<input name="L$lbsc$txtUserName" type="text" value=" -username-" size="10" id="L_lbsc_txtUserName" tabindex="1" class="textbox" onfocus="if(this.value == ' -username-') this.value = ''; Hide('L_lbsc_txtPasswordHelp'); Show('L_lbsc_txtPassword');" onblur="if(this.value == '') this.value = ' -username-';" style="width:80px;"><br>
<img src="/podium/images/spacer.gif" border="0" width="3" height="1"><br>
<input name="L$lbsc$txtPasswordHelp" type="text" value=" -password-" size="10" id="L_lbsc_txtPasswordHelp" tabindex="1" class="textbox" onfocus="Hide('L_lbsc_txtPasswordHelp'); Show('L_lbsc_txtPassword'); document.getElementById('L_lbsc_txtPassword').focus();" style="width:80px;display:;">
<input name="L$lbsc$txtPassword" type="password" size="10" id="L_lbsc_txtPassword" tabindex="2" class="textbox" onkeydown="if ((event.which ? event.which : event.keyCode) == 13) {return false;};" onkeyup="if ((event.which ? event.which : event.keyCode) == 13) {__doPostBack('L$lbsc$btnLogin','');return false;};" onblur="if(this.value == '') {Show('L_lbsc_txtPasswordHelp'); Hide('L_lbsc_txtPassword');}" style="width:80px;display:none;">
</div>
</div>
Ich versuche, ersetzen Sie die Felder Benutzername und Kennwort ein.
Jegliche Hilfe würde sehr geschätzt werden.
Vielen Dank im Voraus.
BEARBEITEN
also habe ich versucht, diese und keine von Ihnen Arbeit:
[webView stringByEvaluatingJavaScriptFromString:@"document.myForm.myText.value='text from Obj-C';"];
[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('L$lbsc$txtUserName').value='ANdrew';"];
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese Methode nimmt JavaScript, führt es in den Kontext des Dokuments, dann gibt das Ergebnis zurück zu Ihnen. Es scheint Ihr JavaScript ist falsch. Versuchen:
Wenn Sie unsicher sind, was eine Methode tut, gehen Sie zu die iOS-reference library, finden die Klasse Referenz für die Klasse, die Sie verwenden, und scrollen Sie nach unten, um die Beschreibung der Methode, die Sie verwenden.
webViewDidFinishLoad:
ist wohl die geeignete Stelle zu setzen.webView
variable halten Sie eine Instanz vonUIWebView
oder ist es null? Wird die delegate-Methode aufgerufen wird? Haben Sie die Delegierten auf der web-anzeigen? Können Sie ausführen, andere JavaScript-wiealert("test");
?Bil, ich war in der Lage mir funktioniert mit der unten. Im wesentlichen, das element mit dem Id -
'logon-field'
ist nur, dass. Ich brach das JavaScript, das in mehrere Zeilen, so dass ich einfügen könnte meine variable (ausUITextField's
Benutzer eingegebenen Wert in meinem eigenen Bildschirm, auf meinenUIWebView
) und verketten. Ich legte den untenstehenden code in meinetextFieldShouldReturn
: Methode in der view-controller, so dass dieser nicht ausgeführt, bis der Benutzer erfolgt die Eingabe in das Textfeld.