用于JavaScript的UIWebView或WKWebkit?

Rya*_*TCB 3 javascript ios wkwebview

我想加载请求的网页并访问DOM的元素以从其中一个节点返回值.我有一些JavaScript可以做到这一点.问题是将值返回到我的应用程序的最佳方法.我看到UIWebView有一个功能

stringByEvaluatingJavaScriptFromString

和WKWebKit有功能

func evaluateJavaScript(javaScriptString:String!,completionHandler:((AnyObject!,NSError!) - > Void)!)

那么它们之间的主要区别是哪个更好,为什么我的用例呢?

KJ *_*dis 8

通常,WKWebView在某些方面与UIWebView不同

  • 它使用了Safari使用的相同Javascript引擎,因此它在Javascript评估上要快得多(它只是在编译脚本时将脚本编译为机器代码,然后再运行它)
  • 它仅在iOS8及更高版本上受支持,因此不适用于较旧的平台
  • 它在一个单独的进程中运行,因此WKWebView代码中的崩溃不会导致整个应用程序崩溃.

要回答您的具体问题,UIWebView会stringByEvaluatingJavaScriptFromString在等待代码运行时阻止您的应用程序,因此是同步的.相比之下,因为WKWebView代码在另一个进程中运行,所以必须异步地与它进行交互; 您提交运行Javascript到WebKit流程的请求,并在JavaScript评估完成并且结果准备就绪时运行完成处理程序.同时,调用的线程evaluateJavaScript将继续执行其他代码.