【问题标题】:Interaction with HTML forms on a UIWebView在 UIWebView 上与 HTML 表单交互
【发布时间】:2013-03-01 21:28:51
【问题描述】:

我正试图弄清楚如何编写一个原生 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”打印到控制台的结果,但它没有更新网页上的文本元素。

感谢您的帮助。

【问题讨论】:

    标签: ios objective-c uiwebview


    【解决方案1】:

    这对我有用。在我的 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(或其他代码)与你的有什么不同吗?

    【讨论】:

    • 我在 Obj-C 代码中看不到任何区别,但在 HTML 中,我试图将数据推送到作为表格内数据单元格的文本字段中。
    • 问题已修复。我的文本字段标签的 ID 与文本字段相同。一旦我让它们变得独一无二,它就起作用了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多