【问题标题】:iOS retrieving javascript variables from UIWebViewiOS 从 UIWebView 检索 javascript 变量
【发布时间】: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 中检索此变量,然后在我的代码中使用它?

谢谢!

【问题讨论】:

    标签: javascript ios objective-c variables


    【解决方案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 您对脚本标签的看法是正确的。编辑以删除它们
      猜你喜欢
      • 1970-01-01
      • 2016-06-02
      • 1970-01-01
      • 2022-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-20
      • 1970-01-01
      相关资源
      最近更新 更多