【发布时间】:2012-03-05 10:48:05
【问题描述】:
我有一个 UIWebView,其中加载了移动 Web 表单 URL。在我的应用程序的一个方法中,我想在具有焦点的 UIWebView 的 HTML 文本字段中插入一些文本。
我该怎么做?有没有办法获取具有焦点的 HTML 元素的 ID——而不是我可以使用 JavaScript 将文本插入到该元素中?
【问题讨论】:
标签: objective-c cocoa-touch uiwebview
我有一个 UIWebView,其中加载了移动 Web 表单 URL。在我的应用程序的一个方法中,我想在具有焦点的 UIWebView 的 HTML 文本字段中插入一些文本。
我该怎么做?有没有办法获取具有焦点的 HTML 元素的 ID——而不是我可以使用 JavaScript 将文本插入到该元素中?
【问题讨论】:
标签: objective-c cocoa-touch uiwebview
您必须影响加载到UIWebView 的页面的唯一方法是-stringByEvaluatingJavaScriptFromString:。最不麻烦的方法可能是在您的页面中设置一个函数,您可以在该字段中使用您想要的文本调用该函数。然后传入一个调用该函数的字符串,例如:
NSString* js = [NSString stringWithFormat:@"myFunction('%@')", someTextVariable];
NSString* results = [self.someWebView stringByEvaluatingJavaScriptFromString:js];
(转义 someTextVariable 中的任何单引号也是必要的!)
【讨论】:
这原来是一个 JavaScript 问题,因为我的解决方案是使用 jQuery 调用 $("*:focus") 来更改 UIWebView 中选定元素的值。这显然要求 UIWebView 中加载的页面使用jQuery。正如 Sixten Otto 所述,调用是使用 -stringByEvaluatingJavaScriptFromString: 进行的。
【讨论】: