1

我有一个 UIWebview 会自动填写用户的用户名和密码。现在,我需要的只是让 webview 自动提交,就好像用户按下了登录按钮一样。无论如何以编程方式将此函数调用到webview?顺便说一句,如果这有帮助的话,我将使用 hotmail 作为网站。

4

4 回答 4

4

要提交表单,您需要执行一段 javascript 代码,找到提交按钮的 DOM 元素,然后对其调用 click() 方法。

我对hotmail登录页面的结构一无所知,但是如果提交按钮上有一个id属性,你可以使用document.getElementById(...)来检索它。否则,您可能必须编写代码来查看所有输入元素以找到 type="submit" 的元素。

在简单的情况下,假设提交按钮的 id 为“submit_button”。然后在您的 Objective C 代码中,您将拥有以下内容:

- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    NSString *code = @"document.getElementById('submit_button').click()";
    [webView stringByEvaluatingJavaScriptFromString: code]
}

如果您需要做更复杂的事情,您可以更改代码字符串的内容。这只是在页面上下文中运行的简单 javascript 代码。

不过,退后一步,我建议您考虑一种更可靠的方法来做到这一点。Hotmail 的登录页面可能随时更改,如果它们更改提交按钮的工作方式,您的应用程序将会中断,例如给它一个不同的名称,或使用其他一些检测输入的方法(例如 javascript onclick 处理程序)。通常,在您的应用程序中依赖特定的网站 HTML 结构可能会导致问题 - 如果可以,最好使用 Web 服务(例如 REST)样式的 API(如果提供的话)。

于 2013-04-01T12:26:48.843 回答
0

在 Web 视图中加载的 Web 内容应包含用于提交页面的 javascript。webViewDidFinishLoad:在您的 WebViewController 中实现并调用stringByEvaluatingJavaScriptFromString:@"yourJavascriptSubmitMethodCall()" 我远离 mac/xcode。值得尝试。

于 2013-04-01T04:34:29.940 回答
0

您可以在 webview 中搜索提交按钮,然后单击第一个。它应该在很多情况下都有效。

- (void)clickOnSubmitButtonForWebView:(UIWebView *)webView {

    NSString *performSubmitJS = @"var passFields = document.querySelectorAll(\"input[type='submit']\"); \
    passFields[0].click()";
    [webView stringByEvaluatingJavaScriptFromString:performSubmitJS];

}
于 2014-04-21T11:37:23.977 回答
-2

Web 视图并不意味着为您调用函数。它只会帮助您以指定的格式显示页面内容。登录或任何其他此类功能应在您的网站代码的后端以编程方式处理。这就是我可以说的。

于 2013-04-01T04:26:50.457 回答