iOS 从 UIWebView 检索 javascript 变量
Posted
技术标签:
【中文标题】iOS 从 UIWebView 检索 javascript 变量【英文标题】:iOS retrieving javascript variables from UIWebView 【发布时间】:2013-01-15 16:50:24 【问题描述】:我有一个包含 div> 的 html 文件,并且我正在加载到 UIWebView 中,我需要知道 div 中有多少行文本,所以我可以使用 javascript 检查:
<script>
function countLines()
var divHeight = document.getElementById('myDiv').offsetHeight;
var lineHeight = parseInt(document.getElementById('myDiv').style.lineHeight);
var lines = divHeight / lineHeight;
alert("Lines: " + lines);
</script>
它确实会提醒变量“行”
在 Objective-C 中,如何从我的 UIWebView 中检索此变量,然后在我的代码中使用它?
谢谢!
【问题讨论】:
【参考方案1】:UIWebView 方法stringByEvaluatingJavaScriptFromString:
是JavaScript 环境的唯一接口。它计算并返回您传递给它的 JavaScript 表达式值的字符串表示形式。所以,例如:
// simplified expression, no function needed
NSString *expr = @"document.getElementById('myDiv').offsetHeight / document.getElementById('myDiv').style.lineHeight";
// now pass it to the web view and parse the result
int lines = [[self.webView stringByEvaluatingJavaScriptFromString:expr] intValue];
【讨论】:
【参考方案2】:这很简单:
NSString *jsString = @"function countLines() var divHeight = document.getElementById('myDiv').offsetHeight;var lineHeight = parseInt(document.getElementById('myDiv').style.lineHeight);var lines = divHeight / lineHeight;return lines;;countLines();";
NSString *responseString = [MywebView stringByEvaluatingJavaScriptFromString:jsString];
你应该在 responseString 变量中有值,你可以将它从 NSString 转换为数字 :-)
【讨论】:
您可能需要在自定义 JavaScript 事件中调用该函数,这就是我保留它的原因... 谢谢你们!很有帮助! @JohnCromartie 您对脚本标签的看法是正确的。编辑以删除它们以上是关于iOS 从 UIWebView 检索 javascript 变量的主要内容,如果未能解决你的问题,请参考以下文章
在 UIWebView 中单击链接时,iOS 从 DetailViewController 开始
如何在 iOS 中使用 UIWebView 从 url 修改内容加载?
从 uiwebview (iOs) 打印本地 html 文件
将 iOS Hybrid App 从 UIWebView 迁移到 WKWebview