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

如何从 iOS 照片库中获取图像并在 UIWebView 中显示

iOS uiwebview 无法从 javascript 方法加载资源