Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 以编程方式在UIWebview中填充数据_Javascript_Objective C_Login_Uiwebview_Nsstring - Fatal编程技术网

Javascript 以编程方式在UIWebview中填充数据

Javascript 以编程方式在UIWebview中填充数据,javascript,objective-c,login,uiwebview,nsstring,Javascript,Objective C,Login,Uiwebview,Nsstring,在我的应用程序中,我希望能够让用户在自定义视图中输入登录信息,然后显示UIWebView。我希望UIWebView以编程方式填充用户的用户名和密码。然后UIWebView应该以编程方式单击登录按钮。我一直在努力: [webView stringByEvaluatingJavaScriptFromString:@"document.L_lbsc_txtUserName.text.value='ANdrew';"]; 但它不起作用。我真的不明白stringByEvaluatingJavaScrip

在我的应用程序中,我希望能够让用户在自定义视图中输入登录信息,然后显示UIWebView。我希望UIWebView以编程方式填充用户的用户名和密码。然后UIWebView应该以编程方式单击登录按钮。我一直在努力:

[webView stringByEvaluatingJavaScriptFromString:@"document.L_lbsc_txtUserName.text.value='ANdrew';"];
但它不起作用。我真的不明白
stringByEvaluatingJavaScriptFromString
是如何工作的,或者它的设计目的是什么

我想这可能与我在上面的字符串字段中填写的内容有关。 以下是我试图访问的网站的源代码:

<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>

该方法接受JavaScript,在文档上下文中执行它,然后将结果返回给您。看起来你的JavaScript是错误的。尝试:

[webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('L$lbsc$txtUserName').value='ANdrew';"];

如果您不确定某个方法的作用,请转到、查找并向下滚动到。

Bil,我可以使用下面的方法。本质上,Id为
'logon-field'
的元素就是这样。我将JavaScript分解为多行,以便插入变量(来自自定义屏幕中用户输入的
UITextField的值,位于我的
UIWebView
)并连接。我将下面的代码放在视图控制器中的我的
textfield shouldReturn
:方法中,以便在用户完成文本字段输入之前不会运行该方法

NSString *logonJSStart = @"document.getElementById('logon-field').value='";

NSString *logonWithValue = [logonJSStart stringByAppendingString:self.logon.text];

NSString *logonJSFinal = [logonWithValue stringByAppendingString:@"';"]; 

[webView stringByEvaluatingJavaScriptFromString:logonJSFinal];

非常感谢。我应该用什么方法把它放进去?viewDidLoad,webViewDidFinishLoad?在您可以访问其内容之前,它需要页面完成加载,因此
webViewDidFinishLoad:
可能是放置它的合适位置。我尝试了,但它似乎不起作用。如果它正在工作,它不会显示在UIWebView中。是否需要重新加载视图或其他内容。否。您是否有任何错误,或者只是被忽略了?我要检查的是:
webView
变量是否包含
UIWebView
的一个实例,或者是nil?是否正在调用委托方法?是否在web视图上设置了代理?您是否可以运行其他JavaScript,例如
alert(“test”)?我正在使用webview代理。没有错误,只是没有回应。它似乎被忽视了。我确实将webview的委托设置为self。我在webViewDidFinishLoad中放置了一个NSLog:它被调用,只是没有响应。我试过警觉的方法,但还是没有成功
NSString *logonJSStart = @"document.getElementById('logon-field').value='";

NSString *logonWithValue = [logonJSStart stringByAppendingString:self.logon.text];

NSString *logonJSFinal = [logonWithValue stringByAppendingString:@"';"]; 

[webView stringByEvaluatingJavaScriptFromString:logonJSFinal];