macos - OSX 上的 WebView 与 WKWebView

标签 macos webview wkwebview

Apple's documentation建议使用 WkWebView对于新的开发,虽然它似乎有一个错字推荐 WKWebView在 mac 开发人员库中的 UIWebView 上。

For new development, employ this class instead of the older UIWebView class.


错字可能是因为他们试图通过使用 same header 将 OSX 和 iOS 界面统一到 Web View 。对彼此而言。
但是,WKWebView没有 WebView 的所有功能在 OSX 中有。例如,您可以在 WebView 中的 native 界面中访问 DOM 节点。但我在 WKWebView 中看不到任何从 Swift/Objective-C 执行此操作的方法.
就我而言,它似乎是 WebView是我需要的,但我厌倦了启动一个依赖将被删除的 API 的项目。但是,我没有看到任何提及弃用 WebView 的意图。标题或文档中的任何位置。
更令人困惑的是 WebKit Framework Reference引用两个 WK和较旧的 Web View API,无需澄清任何内容。

WKWebView

A WKWebView object displays interactive web content, such as for an in-app browser.

WebView

WebView is the core view class in the WebKit framework that manages interactions between the WebFrame and WebFrameView classes.


WebView在 OSX 中消失?

最佳答案

它不是虚惊一场。 Apple 在 6.0 中将 Safari 从 UIWebView/WebView 中移除,因此在旧类中根本不会发生安全修复。仅出于这个原因,您不应该将其用于新事物。苹果已incrementally improving it对于每个操作系统版本,现在可以使用私有(private)扩展(文件://访问、下载等)

话虽如此,它不会完全等同于旧的 WebView。您不能再直接访问 DOM,因为网络/渲染/UI 进程被拆分,并且您通过像这样的元素引用来创建锁。使用 postMessage() message handler以及这两个支柱之间的 wkwebview.evaluateJavaScript() 和 callback-ish/promisy JS 代码,用于异步处理 web<>native 交互。

关于macos - OSX 上的 WebView 与 WKWebView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34363924/

相关文章:

php - 如何向 MAMP 添加其他 PHP 版本

php - 如何在带有 XAMPP 的 Mac 上使用 PHP 运行 ffmpeg

macos - 无法更新节点版本 - 意外标记

ios - ios 中 webview 顶部的原生视差效果

Android Talkback 不使用 html 在 Webview 中读取 utf-8 字符

android - 无法为我的 webview 解析方法 'findViewById(int)'

ios - 检测媒体内容是否从 WKWebView 开始播放

ios - 在 WKWebview 和 NSURLRequest 之间共享认证

IOS Webkit跟踪被点击的url和URL方案

mysql - 无法在 Mac OS 10.6 Snow Leopard 中启动 MySql