Как показать инспектора в вашем рабочем приложении на базе WKWebView?
Я ищу способ показать инспектор для WKWebView внутри моего приложения Mac.
С WebKit1 и WebView было легко показать инспектора внутри вашего Mac-приложения, просто установив для WebKitDeveloperExtras значение true в ваших UserDefaults. Это даст вам меню "Inspect Element" в каждом веб-представлении.
Но в WebKit2 с WKWebView это больше не работает. В сессии инспектора WWDC14 они объясняют, что вы должны добавить право и затем можете показать инспектора в меню разработчика Safari. Это работает только в том случае, если вы разработчик.
Я просмотрел личные заголовки и нашел _allowsRemoteInspection, что заставляет меня думать, что вы как-то можете запустить инспектора и подключиться к нему, но я не уверен, куда идти оттуда.
Хотя я надеюсь на официальный способ сделать это, мое приложение не входит в AppStore, поэтому я в порядке с использованием личных вещей.
Ответы
Ответ 1
Это было исправлено здесь: https://lists.webkit.org/pipermail/webkit-dev/2014-August/026790.html
Просто выведите частную собственность, как это, и вы можете ее использовать.
@interface WKPreferences (WKPrivate)
@property (nonatomic, setter=_setDeveloperExtrasEnabled:) BOOL _developerExtrasEnabled;
@end
Теперь вы получаете меню "Inspect Element" по правому клику.
Единственное, что мне еще нужно выяснить, - это как показать инспектора непосредственно из кода.
Ответ 2
Для Swift вместо создания соединительного заголовка вы можете установить его непосредственно
self.webView.configuration.preferences.setValue(true, forKey: "developerExtrasEnabled")
Ответ 3
Основываясь на том, что нашел Koen, более простой способ установить это свойство - использовать кодирование значений ключей, не требуются заголовки мостов.
Swift:
preferences.setValue(true, forKey: "developerExtrasEnabled")
Или в Objective-C:
[preferences setValue:@YES forKey:@"developerExtrasEnabled"];
Key Value Coding будет искать методы и переменные экземпляра, соответствующие ключу, в том числе личные, префикс подчеркивания.
Ответ 4
Основываясь на Koen Bok, ответьте, для Swift, принесите этот смысл. Используя эти файлы, вам нужно добавить следующую строку в свой заголовок:
#import "WKPreferences+DevExtras.h"
Использование выглядит как
let webView = WKWebView(frame: window.frame)
webView.configuration.preferences.enableDevExtras();