与UIWebView上的HTML表单交互

时间:2013-03-01 21:28:52

标签: ios objective-c uiwebview

我想弄清楚如何编写一个本机ios应用程序,允许我将数据推送到网站的元素。例如,如果网页有一个文本字段,我想在UIWebView的顶部放置一个滑块,并将滑块的结果(例如5.0)放在文本字段中。我一直在尝试使用以下代码:

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{
    NSString *scriptFunction = @"document.getElementById('user_field').value = 'Joe';";
    NSString *result = [webView stringByEvaluatingJavaScriptFromString:scriptFunction];
    NSLog(@"Result: %@", result);
}

我得到的结果是将'Joe'打印到控制台,但它不会更新网页上的文本元素。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这对我有用。在我的HTML文档中使用它:

<form>
    First name: <input id="input1" type="text" name="fname"><br>
    Last name: <input id="input2" type="text" name="lname"><br>
            <input type="submit" value="Submit">
</form>

使用UIWebViewDelegate.webViewDidFinishLoad中的这个iOS代码:

NSString    *scriptFunction = @"document.getElementById( 'input1' ).value = 'Joe';";
NSString    *result         = [self stringByEvaluatingJavaScriptFromString:scriptFunction];
NSLog( @"Result: %@", result );

我的UIWebView子类也实现了UIWebViewDelegate。

在模拟器上的WebView中,我看到“Joe”出现在“First name:”字段中。 我的第一次尝试在getElementById()中使用了'fname'。当这不起作用时,我将id =“input1”添加到HTML并在getElementById()中切换到“input1”。我也看到“结果:乔”登录到我的控制台。

HTML(或其他代码)中的内容与您的不同吗?