javascript - 用于 JavaScript 的 UIWebView 或 WKWebkit?

标签 javascript ios wkwebview

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

stringByEvaluatingJavaScriptFromString

WKWebKit 有功能

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

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

最佳答案

总的来说,WKWebView 在几个方面与 UIWebView 不同

  • 它使用与 Safari 相同的 Javascript 引擎,因此它在 Javascript 评估时要快得多(它使用即时编译在运行脚本之前将您的脚本编译为机器代码)
  • 它仅支持 iOS8 及更高版本,因此不适用于旧平台
  • 它在单独的进程中运行,因此 WKWebView 代码中的崩溃不会导致整个应用程序崩溃。

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

关于javascript - 用于 JavaScript 的 UIWebView 或 WKWebkit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31625522/

相关文章:

javascript - 使用 Graphql 时在 Mongoose 模式中填充 "Ref"

ios - 为核心数据一对多关系添加一个项目到 NSSet

Javascript 等待 iframe 重新加载

javascript - 无法在 Mongoose 回调中保存

ios - 使用UIScrollView,缩小时如何使内容 View 保持在中心?

ios - 呈现 UIActivityViewController 时发出警告

swift - 如何让 Xcode 在混合应用程序的 webview 中查找元素?

ios - 在 IOS WebView 中打开时处理来自 TXT 文件的数据

ios - 在打开/加载之前加载/刷新 WKWebView

javascript - 为什么带有 pdf 文件的 <iframe> 没有显示在页面上?