我想要加载请求的网页并访问 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/