如何设置 WebView 使用的 WebKit 版本...?
How do I set the WebKit version used by a WebView...?
我通过 JUCE WebBrowserComponent 在 OS X 应用程序中使用 WebKit,它是 Apple WebView
Objective-C class 的轻量级包装器。
我正在 OS X 10.12 上编译,部署目标为 10.7。
我遇到的问题是在 OS X 10.8 上,WebView
使用的 WebKit 版本似乎与 Safari 使用的不同,我无法弄清楚如何选择 WebKit 版本或为什么它们不同。
运行 otool -L
在 Safari 上,给我:
otool -L /System/Library/PrivateFrameworks/Safari.framework/Versions/A/Safari | grep WebKit
/System/Library/Frameworks/WebKit.framework/Versions/A/WebKit (compatibility version 1.0.0, current version 536.30.1)
/System/Library/PrivateFrameworks/WebKit2.framework/Versions/A/WebKit2 (compatibility version 1.0.0, current version 536.30.1)
运行 otool -L
在 Juce 演示中给我:
otool -L JuceDemo | grep WebKit
/System/Library/Frameworks/WebKit.framework/Versions/A/WebKit (compatibility version 1.0.0, current version 602.2.14)
首先,为什么 "current version" 数字不同,显然是相同的链接框架?
此外,如果我将相应的应用程序指向 http://browserspy.dk/webkit.php,它会为我提供适用于 Safari 的 600.8.9 的 AppleWebKit 版本和 的版本536.30.1 用于 JUCE 演示。
是什么导致了这些不同的版本号,我如何配置我的应用程序以便我的 WebView
使用 Safari 使用的“600.8.9”版本的 WebKit?
otool 版本
otool 输出的当前版本 是构建应用程序时用于link 的版本。
Safari、WebKit 和一切
在最新的 macOS 版本中,Safari 使用系统 WebKit 版本。因此带有 Safari 10 的 macOS Sierra 10.12 使用 /System/Library/Frameworks/WebKit.
Safari 还支持较旧的 macOS 版本。并且独立于系统进行更新。例如,Safari 10 在 macOS 10.10、10.11 和 10.12 上运行。现在 macOS 10.11 与 Safari 9 一起发布,但是当安装 Safari 10 时它不使用系统 WebKit。而是使用 /System/Library/StagedFrameworks/Safari 中的版本。
为什么?
新的主要 Safari 版本不仅添加了闪亮的新功能和错误,有时还会删除一些东西。一些病态的 -webkit 前缀浮现在脑海中。 WebKit 是 SDK 的一部分,它保证您的应用不会因此类更新而中断。
测试
这里是来自 WebView 和 WKWebView 的测试应用程序的版本输出:
macOS 10.8.5 (12F2560):
Safari Version 6.2.8 (8537.85.17.9.1)
WebKit Version 600.8.9
Cocoa App
WebView WebKit Version 536.30.1
macOS 10.9.5 (13F1911):
Safari Version 9.1.3 (9537.86.7.8)
WebKit Version 601.7.8
Cocoa App
WebView WebKit Version 537.78.2
macOS 10.10.5 (14F2009):
Safari Version 10.0.1 (10602.2.14.0.7)
WebKit Version 602.2.14
Cocoa App
WebView WebKit Version 600.8.9
WKWebView WebKit Version 600.8.9
macOS 10.11.6 (15G1108):
Safari Version 10.0.1 (11602.2.14.0.7)
WebKit
Version 602.2.14
Cocoa App
WebView WebKit Version 601.7.8
WKWebView WebKit Version 601.7.8
回答
不支持link您的应用到 Safari WebKit 版本。
您可以包含自己的 WebKit 构建。但我认为为旧版本的部署目标编写 Web 代码更简单。
我通过 JUCE WebBrowserComponent 在 OS X 应用程序中使用 WebKit,它是 Apple WebView
Objective-C class 的轻量级包装器。
我正在 OS X 10.12 上编译,部署目标为 10.7。
我遇到的问题是在 OS X 10.8 上,WebView
使用的 WebKit 版本似乎与 Safari 使用的不同,我无法弄清楚如何选择 WebKit 版本或为什么它们不同。
运行 otool -L
在 Safari 上,给我:
otool -L /System/Library/PrivateFrameworks/Safari.framework/Versions/A/Safari | grep WebKit
/System/Library/Frameworks/WebKit.framework/Versions/A/WebKit (compatibility version 1.0.0, current version 536.30.1)
/System/Library/PrivateFrameworks/WebKit2.framework/Versions/A/WebKit2 (compatibility version 1.0.0, current version 536.30.1)
运行 otool -L
在 Juce 演示中给我:
otool -L JuceDemo | grep WebKit
/System/Library/Frameworks/WebKit.framework/Versions/A/WebKit (compatibility version 1.0.0, current version 602.2.14)
首先,为什么 "current version" 数字不同,显然是相同的链接框架?
此外,如果我将相应的应用程序指向 http://browserspy.dk/webkit.php,它会为我提供适用于 Safari 的 600.8.9 的 AppleWebKit 版本和 的版本536.30.1 用于 JUCE 演示。
是什么导致了这些不同的版本号,我如何配置我的应用程序以便我的 WebView
使用 Safari 使用的“600.8.9”版本的 WebKit?
otool 版本
otool 输出的当前版本 是构建应用程序时用于link 的版本。
Safari、WebKit 和一切
在最新的 macOS 版本中,Safari 使用系统 WebKit 版本。因此带有 Safari 10 的 macOS Sierra 10.12 使用 /System/Library/Frameworks/WebKit.
Safari 还支持较旧的 macOS 版本。并且独立于系统进行更新。例如,Safari 10 在 macOS 10.10、10.11 和 10.12 上运行。现在 macOS 10.11 与 Safari 9 一起发布,但是当安装 Safari 10 时它不使用系统 WebKit。而是使用 /System/Library/StagedFrameworks/Safari 中的版本。
为什么?
新的主要 Safari 版本不仅添加了闪亮的新功能和错误,有时还会删除一些东西。一些病态的 -webkit 前缀浮现在脑海中。 WebKit 是 SDK 的一部分,它保证您的应用不会因此类更新而中断。
测试
这里是来自 WebView 和 WKWebView 的测试应用程序的版本输出:
macOS 10.8.5 (12F2560):
Safari Version 6.2.8 (8537.85.17.9.1)
WebKit Version 600.8.9Cocoa App
WebView WebKit Version 536.30.1
macOS 10.9.5 (13F1911):
Safari Version 9.1.3 (9537.86.7.8)
WebKit Version 601.7.8Cocoa App
WebView WebKit Version 537.78.2
macOS 10.10.5 (14F2009):
Safari Version 10.0.1 (10602.2.14.0.7)
WebKit Version 602.2.14Cocoa App
WebView WebKit Version 600.8.9
WKWebView WebKit Version 600.8.9
macOS 10.11.6 (15G1108):
Safari Version 10.0.1 (11602.2.14.0.7)
WebKit Version 602.2.14Cocoa App
WebView WebKit Version 601.7.8
WKWebView WebKit Version 601.7.8
回答
不支持link您的应用到 Safari WebKit 版本。
您可以包含自己的 WebKit 构建。但我认为为旧版本的部署目标编写 Web 代码更简单。