【问题标题】:WebView vs WKWebView on OSXOSX 上的 WebView 与 WKWebView
【发布时间】:2016-03-25 15:40:20
【问题描述】:

Apple's documentation 建议使用WkWebView 进行新开发,尽管在 mac 开发人员库中推荐WKWebView 而不是 UIWebView 的地方似乎有一个错字。

对于新的开发,使用这个类而不是旧的 UIWebView 类。

这个错字可能是因为他们试图通过使用same header 来将 OSX 和 iOS 界面统一到 Web 视图。

但是,WKWebView 没有WebView 在 OSX 中的所有功能。例如,您可以在WebView 中的本机界面中访问 DOM 节点,但我看不到在 WKWebView 中的 Swift/Objective-C 中有任何方法可以做到这一点。

就我的目的而言,WebView 似乎是我需要的,但我厌倦了启动一个依赖将被删除的 API 的项目。但是,我没有在标题或文档中的任何地方看到任何提及弃用 WebView 的意图。

更令人困惑的是,WebKit Framework Reference 引用了 WK 和旧的 Web 视图 API,没有澄清任何内容。

WKWebView

WKWebView 对象显示交互式 Web 内容,例如用于应用内浏览器。

网页视图

WebView 是 WebKit 框架中的核心视图类,用于管理 WebFrame 和 WebFrameView 类之间的交互。

WebView 在 OSX 中会消失吗?

【问题讨论】:

    标签: macos webview wkwebview


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      重要

      从 iOS 8.0 和 OS X 10.10 开始,使用 WKWebView 将网页内容添加到您的应用中。
      不要使用 UIWebView 或 WebView。

      https://developer.apple.com/documentation/webkit/wkwebview

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-23
        相关资源
        最近更新 更多