我查看了很多来自苹果的文档,但我仍然无法理解如何将我的javascript函数实现到webview中。
我想用javascript填写表格(用户名和密码)并提交表格。
在控制台中,我一直在使用脚本:
javascript:(function() {
document.lform.in_tx_username.value='username';
document.lform.in_pw_userpass.value='password';
doLogin();
})()
对象代码看起来像这样:
loginScript = @"function() {document.lform.in_tx_username.value='username';
document.lform.in_pw_userpass.value='password';
doLogin();}";
[_visibleWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:scheduleURL]]];
[_visibleWebView stringByEvaluatingJavaScriptFromString:loginScript];
其中scheduleUrl是我上面链接的网址。 我对Obj-C和JS都很陌生,所以任何帮助/提示都会受到赞赏。
答案 0 :(得分:2)
当你运行stringByEvaluatingJavaScriptFromString
时,你正在页面/ HTML上运行javascript。你传递的函数在评估时什么都不做,因为函数不会在任何地方被调用。只需运行javascript本身:
loginScript = @"document.lform.in_tx_username.value='username';
document.lform.in_pw_userpass.value='password';
doLogin();";
此javascript将在页面上执行,而不仅仅是经过验证
答案 1 :(得分:0)
您可以尝试在webview加载完成后执行代码:
加载请求:
_visibleWebView = self;
[_visibleWebView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:scheduleURL]]];
然后注入javascript调用:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
loginScript = @"function() {document.lform.in_tx_username.value='username';
document.lform.in_pw_userpass.value='password';
doLogin();}";
[_visibleWebView stringByEvaluatingJavaScriptFromString:loginScript];
}
修改
正如Simon McLoughlin所说, 你还必须调用javascript方法不仅“声明”它