如何将javascript注入uiwebview

时间:2014-02-05 16:45:12

标签: javascript objective-c uiwebview

我查看了很多来自苹果的文档,但我仍然无法理解如何将我的javascript函数实现到webview中。

我有一个网址:https://mobilemy.umd.edu/portal/server.pt/gateway/PTARGS_0_340574_368_211_0_43/https%3B/www.sis.umd.edu/testudo/studentSched?term=201401

我想用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都很陌生,所以任何帮助/提示都会受到赞赏。

2 个答案:

答案 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方法不仅“声明”它