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)
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)
键值编码将查找与键匹配的方法和实例变量,包括以下划线为前缀的私有变量.
这是补丁: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"菜单.
我仍然需要找到的唯一方法是如何直接从代码中显示检查器.
从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)
| 归档时间: |
|
| 查看次数: |
11113 次 |
| 最近记录: |