objective-c - objective - wkwebview before ios11
¿Cómo mostrar al inspector dentro de su aplicación de escritorio basada en WKWebView? (4)
En función de lo que descubrió Koen, una forma más fácil de establecer esta propiedad es utilizar la codificación de valor clave, sin necesidad de puentes de conexión.
Rápido:
preferences.setValue(true, forKey: "developerExtrasEnabled")
O en Objective-C:
[preferences setValue:@YES forKey:@"developerExtrasEnabled"];
Key Value Coding buscará métodos y variables de instancia que coincidan con la clave, incluidos los privados con el prefijo de subrayado.
Estoy buscando una manera de mostrar al inspector para un WKWebView dentro de mi aplicación Mac.
Con WebKit1 y WebView fue fácil mostrar al inspector dentro de su aplicación Mac, simplemente configurando WebKitDeveloperExtras como verdadero en sus Valores predeterminados del usuario. Eso le daría un menú "Inspeccionar elemento" en cada vista web.
Pero en WebKit2 con WKWebView esto ya no funciona. En la sesión del inspector de WWDC14, explican que tiene que agregar un derecho y luego puede mostrar al inspector desde el menú del desarrollador de Safari. Esto solo funciona si eres el desarrollador.
Miré a través de los encabezados privados y encontré _allowsRemoteInspection que me hace pensar que de alguna manera puedes lanzar un inspector y conectarte a él, pero no estoy seguro de a dónde ir desde allí.
Aunque espero una forma oficial de hacer esto, mi aplicación no está en la AppStore, así que estoy de acuerdo con el uso de cosas privadas.
Esto se actualizó aquí: https://lists.webkit.org/pipermail/webkit-dev/2014-August/026790.html
Simplemente exponga la propiedad privada de esta manera y podrá usarla.
@interface WKPreferences (WKPrivate)
@property (nonatomic, setter=_setDeveloperExtrasEnabled:) BOOL _developerExtrasEnabled;
@end
Ahora obtienes el menú "Inspeccionar elemento" al hacer clic derecho.
Lo único que todavía tengo que descubrir es cómo mostrar al inspector directamente desde el código.
Para Swift, en lugar de crear un encabezado de puente, puede configurarlo directamente
self.webView.configuration.preferences.setValue(true, forKey: "developerExtrasEnabled")
Sobre la base de la respuesta de Koen Bok, para Swift, confiere esta idea . Usando esos archivos, deberá agregar la siguiente línea a su encabezado puente:
#import "WKPreferences+DevExtras.h"
Uso se ve como
let webView = WKWebView(frame: window.frame)
webView.configuration.preferences.enableDevExtras();