Подтвердить что ты не робот

Как показать инспектора в вашем рабочем приложении на базе WKWebView?

Я ищу способ показать инспектор для WKWebView внутри моего приложения Mac.

С WebKit1 и WebView было легко показать инспектора внутри вашего Mac-приложения, просто установив для WebKitDeveloperExtras значение true в ваших UserDefaults. Это даст вам меню "Inspect Element" в каждом веб-представлении.

Но в WebKit2 с WKWebView это больше не работает. В сессии инспектора WWDC14 они объясняют, что вы должны добавить право и затем можете показать инспектора в меню разработчика Safari. Это работает только в том случае, если вы разработчик.

Я просмотрел личные заголовки и нашел _allowsRemoteInspection, что заставляет меня думать, что вы как-то можете запустить инспектора и подключиться к нему, но я не уверен, куда идти оттуда.

Хотя я надеюсь на официальный способ сделать это, мое приложение не входит в AppStore, поэтому я в порядке с использованием личных вещей.

4b9b3361

Ответ 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();