【发布时间】:2011-08-20 00:12:40
【问题描述】:
正在开发一个将 HTML 页面加载到 uiwebview 中的应用程序 - 该 html 文件包含文本文件和下拉列表、文本框等。
这里如何获取用户在该文本文件中输入的值以及从下拉(选择器)中选择的答案。
谢谢
【问题讨论】:
标签: javascript html objective-c ios uiwebview
正在开发一个将 HTML 页面加载到 uiwebview 中的应用程序 - 该 html 文件包含文本文件和下拉列表、文本框等。
这里如何获取用户在该文本文件中输入的值以及从下拉(选择器)中选择的答案。
谢谢
【问题讨论】:
标签: javascript html objective-c ios uiwebview
您可以在页面内轮询 javascript 函数(使用 UIWebView stringByEvaluatingJavascriptFromString:)。
或者你可以使用一个小技巧直接从页面调用一个objective-c方法:UIWEBVIEW SECRETS - PART3 - HOW TO PROPERLY CALL OBJECTIVEC FROM JAVASCRIPT
(向下滚动到底部以获取 github 链接)。
【讨论】:
您可以使用[UIWebView stringByEvaluatingJavascriptFromString:] 方法并通过执行javascript 来获取值。
示例: 如果你的 html 是:
<html>
<body>
<input id="myId" type="text" value="TextValue"/>
</body>
</html>
以下代码可以获取文本字段的值:
NSString* value = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementById('myId').value"];
【讨论】:
如果 HTML 响应是这样的,
<html>
<body>
<input id="myId" type="hidden" value="TextValue"/>
</body>
</html>
所以你可以在 Swift 中这样访问,
var id:String = IBwebView.stringByEvaluatingJavaScriptFromString("document.getElementById('myId').value")!
println(id)
【讨论】:
getElementsByClassName 方法而不是getElementById 来获取class 而不是id 的值。