在 UIWebView 中从 JS 返回一个 var

Posted

技术标签:

【中文标题】在 UIWebView 中从 JS 返回一个 var【英文标题】:returning a var from JS in UIWebView 【发布时间】:2012-01-16 17:04:54 【问题描述】:

我对如何在 UIWebView 中执行的 js 中提取 var 的值感到很困惑,我的代码是:

NSString * js = [NSString stringWithFormat:@"var script = document.createElement('script');"  
                     "script.type = 'text/javascript';"  
                     "script.text = \"function getTopLeftCorner()  "  
                        "var el = document.elementFromPoint(%f, %f);"
                        "var pos = [el.offsetLeft, el.offsetTop];"
                        "var parent = el.offsetParent;"
                        "if (parent != el) " 
                            "while (parent) "  
                             "pos[0] += parent.offsetLeft;" 
                             "pos[1] += parent.offsetTop;" 
                             "parent = parent.offsetParent;"
                            ""
                        ""
                        "return pos;"
                      "\";"  
                      "document.getElementsByTagName('head')[0].appendChild(script);"
                     , pt.x, pt.y];  

    [self stringByEvaluatingJavaScriptFromString:js];
    NSString * result = [self stringByEvaluatingJavaScriptFromString:@"getTopLeftCorner()"];

    NSLog(@"RESULT IS %@", result);

知道为什么结果是空的吗?

【问题讨论】:

你是在获取webViewDidFinishLoad之后的结果吗? 【参考方案1】:

您的第一条语句NSString * js = [NSString stringWithFormat:@"var script 关闭了行尾的字符串,然后是更多C strings。您应该从 Objective-C 编译器中得到一个语法错误。

要连接字符串,请使用[NSString stringWithFormat:@"%@/%@/%@", three, two, one];。阅读class reference 以获得对该方法的详细说明。

【讨论】:

以上是关于在 UIWebView 中从 JS 返回一个 var的主要内容,如果未能解决你的问题,请参考以下文章

在目标 c 中从 UIWebView.scrollView 写入 PDF 文件

如何在 iOS 7 的 UIWebView 中从 JavaScript 调用 Objective-C?

如何在 iOS 8 Objective c 中的 UIWebView 中从文档中加载 png 图像

IOS6 横向在仅纵向 iPhone 应用程序中从 uiwebview 播放嵌入的 youtube 视频

ios UIWebView支持缩放

如何在 Node.js 中从 MongoDB 返回 JSON?