我正在寻找一种方法在我的Mac应用中显示inspector WKWebView。
使用WebKit1和WebView,只需在UserDefaults中将WebKitDeveloperExtras设置为true,就可以轻松地在Mac应用程序中显示检查器。这会给你一个" Inspect Element"每个网页视图中的菜单。
但是在使用WKWebView的WebKit2中,这已不再适用了。在WWDC14检查员会话中,他们解释说您必须添加权利,然后可以从Safari开发人员菜单中显示检查员。这只适用于您是开发人员的情况。
我浏览了private headers并找到了_allowsRemoteInspection,这让我觉得你可以以某种方式启动一个检查员并连接到它,但我不知道从那里去哪里。
虽然我希望以官方方式执行此操作,但我的应用程序不在AppStore中,所以我可以使用私有内容。
答案 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();