2010-01-10 20 views
8

¿Cómo puedo abrir el Inspector web de Webkit desde mi objeto WebView mediante programación?¿Cómo puedo abrir el Web Inspector de Webkit desde mi objeto WebView programáticamente?

Tengo éxito to enable Webkit's Web Inspector en mi WebView. Está funcionando bien, y ahora puedo abrirlo haciendo clic en "Inspeccionar elemento" en el menú contextual. Y quiero hacer esto con mi botón. Pero no pude encontrar una manera adecuada de hacer esto. Mi conocimiento de DOM es de 10 años, muy novato en HTML DOM de hoy en día. ¿Hay alguna manera de hacer esto?

Encontré un documento de clase: InspectorController. Creo que este es un tipo de llave. Pero no puedo saber qué objeto expone y cómo puedo usar esto.

Medio Ambiente:

  • Mac OS X 10.6
  • Xcode 3.2.1 (iPhone SDK, sin plug-in)

Respuesta

3

No hay API pública para interactuar con el WebInspector a través de la DOM o Cocoa. Debe presentar una solicitud de mejora al https://bugreport.apple.com/ para solicitar esta API.

InspectorController es también un detalle de implementación interna del WebInspector y es probable que sea un error que se encuentra en el sitio web de la documentación.

11

Aquí hay un código que debe ayudar a que lo abra a partir de cacao mediante programación:

@interface WebInspector : NSObject 
{ 
    WebView *_webView; 
} 
- (id)initWithWebView:(WebView *)webView; 
- (void)detach:(id)sender; 
- (void)show:(id)sender; 
- (void)showConsole:(id)sender; 
@end 

void MyWebKit::ShowInspector(bool console){ 
    if (!m_webView) 
     return; 

    if(!m_inspector){ 
    m_inspector = [[WebInspector alloc] initWithWebView:m_webView]; 
    [m_inspector detach:m_webView]; 
    } 

    if(console){ 
    [m_inspector showConsole:m_webView]; 
    } 
    else { 
    [m_inspector show:m_webView]; 
    } 
} 

extenderlo a la dom, simplemente exponer esta función para JS.

+0

Lo siento pero no puedo entender cómo puedo aplicar este código a mi programa. Parece C++, pero no soy bueno en C++. – Eonil

+0

@Eonil. Sé que esto es antiguo, pero ... El código anterior se basa en el marco de Cocoa y está escrito en Objective-C. –

+0

@ Old Oh, gracias por comentar. Yo era novato en Objective-C también. Ahora puedo entender todos los códigos de arriba. Gracias de nuevo :) – Eonil

5

Para aquellos confundido por la respuesta de @alex MacCaw (que es C++), aquí es una versión más "normal" ..

en su archivo ... .m declarar los métodos de cabecera WebInspector ..

@interface WebInspector : NSObject { WebView *_webView; } 
- (id)initWithWebView:(WebView *)webView; 
- (void)detach:  (id)sender; 
- (void)show:  (id)sender; 
- (void)showConsole:(id)sender; 
@end 

Luego, en el mismo archivo, ya sea delegado de aplicación o subclase WebView ... declare un ivar para "mantener su inspector, y cree un método para abrirlo, usando SU instancia o propiedad de vista web o lo que sea ...

@implementation AppController { WebInspector *_inspector; } 

- (IBAction)showInspector:(id)x { 
    _inspector = _inspector = [WebInspector.alloc initWithWebView:_myWebView]; 
    [_inspector  detach:_myWebView]; 
    [_inspector showConsole:_myWebView]; 
} 
.... 
+0

Me gustaría que el inspector web se muestre en su propia ventana. Supongo que eso es lo que se supone que debe hacer 'detach'. Si nos fijamos en [source] (http://www.opensource.apple.com/source/ WebKit/WebKit-7534.48.3/win/WebInspector.cpp), detach no hace nada. ¿Alguna idea sobre cómo lograr esto? – bkant

Cuestiones relacionadas