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

Koe*_*Bok 24 macos webkit objective-c wkwebview webkit2

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

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

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

我查看了私有标题,发现_allowsRemoteInspection,这让我觉得你可以以某种方式启动一个检查员并连接到它,但我不知道从那里去哪里.

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

Dra*_*kic 19

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

self.webView.configuration.preferences.setValue(true, forKey: "developerExtrasEnabled")
Run Code Online (Sandbox Code Playgroud)

  • 就像烤架上的牛排mmmmmm (2认同)

Pat*_*ith 14

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

迅速:

preferences.setValue(true, forKey: "developerExtrasEnabled")
Run Code Online (Sandbox Code Playgroud)

或者在Objective-C中:

[preferences setValue:@YES forKey:@"developerExtrasEnabled"];
Run Code Online (Sandbox Code Playgroud)

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


Koe*_*Bok 6

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

只需公开这样的私有财产,你就可以使用它.

@interface WKPreferences (WKPrivate)
@property (nonatomic, setter=_setDeveloperExtrasEnabled:) BOOL _developerExtrasEnabled;
@end
Run Code Online (Sandbox Code Playgroud)

现在,右键单击"Inspect Element"菜单.

我仍然需要找到的唯一方法是如何直接从代码中显示检查器.


vau*_*all 5

是可检查的

从macOS Ventura ( )开始13.3,有一个新属性isInspectableWKWebView;打开它将会启用检查器。不再需要依赖私有 API KVO

wkWebView.isInspectable = true
Run Code Online (Sandbox Code Playgroud)

警告

但有一个警告,要向检查员显示,您需要右键单击网站,并且上下文菜单应该有选项Inspect Element。有时情况并非如此,您需要从Safari打开Web Inspector(需要在 Safari 上启用开发人员工具)。

Safari > Develop > [Name of your device] > [Name of your app] > [URL or title of website open with WKWebView]
Run Code Online (Sandbox Code Playgroud)