如何在基于WKWebView的桌面应用程序中显示检查器?

时间:2014-08-08 09:26:15

标签: objective-c macos webkit wkwebview webkit2

我正在寻找一种方法在我的Mac应用中显示inspector WKWebView。

使用WebKit1和WebView,只需在UserDefaults中将WebKitDeveloperExtras设置为true,就可以轻松地在Mac应用程序中显示检查器。这会给你一个" Inspect Element"每个网页视图中的菜单。

但是在使用WKWebView的WebKit2中,这已不再适用了。在WWDC14检查员会话中,他们解释说您必须添加权利,然后可以从Safari开发人员菜单中显示检查员。这只适用于您是开发人员的情况。

我浏览了private headers并找到了_allowsRemoteInspection,这让我觉得你可以以某种方式启动一个检查员并连接到它,但我不知道从那里去哪里。

虽然我希望以官方方式执行此操作,但我的应用程序不在AppStore中,所以我可以使用私有内容。

4 个答案:

答案 0 :(得分:19)

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

self.webView.configuration.preferences.setValue(true, forKey: "developerExtrasEnabled")

答案 1 :(得分:14)

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

夫特:

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

或在Objective-C中:

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

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

答案 2 :(得分:5)

这是补丁:https://lists.webkit.org/pipermail/webkit-dev/2014-August/026790.html

只需公开这样的私有财产,即可使用它。

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

现在你得到了" Inspect Element"右键单击菜单。

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

答案 3 :(得分:1)

根据Koen Bok的回答,对于Swift来说,授予this gist。使用这些文件,您需要将以下行添加到桥接标题中:

#import "WKPreferences+DevExtras.h"

用法类似于

let webView = WKWebView(frame: window.frame)
webView.configuration.preferences.enableDevExtras();