31

我正在寻找一种方法来在我的 Mac 应用程序中显示 WKWebView的检查器。

使用 WebKit1 和 WebView,只需在 UserDefaults 中将 WebKitDeveloperExtras 设置为 true,就可以轻松地在 Mac 应用程序中显示检查器。这将在每个 Web 视图中为您提供“检查元素”菜单。

但是在带有 WKWebView 的 WebKit2 中,这不再起作用了。在 WWDC14 检查器会话中,他们解释说您必须添加一项权利,然后才能从 Safari 开发人员菜单中显示检查器。这仅在您是开发人员时才有效。

我查看了私有标题,发现 _allowsRemoteInspection 这让我认为您可以以某种方式启动检查器并连接到它,但我不确定从那里去哪里。

虽然我希望有一种官方的方式来做到这一点,但我的应用程序不在 AppStore 中,所以我可以使用私人的东西。

4

4 回答 4

29

对于 Swift,您可以直接设置它,而不是构建桥接头

self.webView.configuration.preferences.setValue(true, forKey: "developerExtrasEnabled")
于 2015-08-26T13:51:22.637 回答
18

根据 Koen 的发现,设置此属性的更简单方法是使用键值编码,不需要桥接头。

迅速:

preferences.setValue(true, forKey: "developerExtrasEnabled")

或者在 Objective-C 中:

[preferences setValue:@YES forKey:@"developerExtrasEnabled"];

键值编码将查找与键匹配的方法和实例变量,包括以下划线为前缀的私有变量。

于 2015-03-16T04:54:47.380 回答
6

这是在这里修补的:https ://lists.webkit.org/pipermail/webkit-dev/2014-August/026790.html

只需像这样公开私有财产,您就可以使用它。

@interface WKPreferences (WKPrivate)
@property (nonatomic, setter=_setDeveloperExtrasEnabled:) BOOL _developerExtrasEnabled;
@end

现在您可以在右键单击时获得“检查元素”菜单。

我唯一需要知道的是如何直接从代码中显示检查器。

于 2014-10-01T20:02:19.720 回答
1

以 Koen Bok 的回答为基础,为 Swift 提供这个要点。使用这些文件,您需要将以下行添加到桥接头中:

#import "WKPreferences+DevExtras.h"

用法看起来像

let webView = WKWebView(frame: window.frame)
webView.configuration.preferences.enableDevExtras();
于 2014-11-27T02:39:40.947 回答