Pergunta

Como posso aparecer Inspector Web do Webkit do meu objeto WebView programação?

eu conseguir para ativar web Inspector do Webkit no meu WebView. Ele está trabalhando bem, e agora eu posso colocá-la para cima, clicando em "Inspect Element" na menu de contexto. E eu quero fazer isso com o meu botão. Mas eu não poderia encontrar uma maneira correta de fazer isso. Meu conhecimento DOM é de 10 anos de idade, muito novato em HTML DOM de hoje em dia. Existe alguma maneira de fazer isso?

Eu encontrei um documento classe: InspectorController . Eu acho que isso é uma espécie de chave. Mas eu não posso saber o que objeto expõe e como posso usar isso.

Ambiente:

  • Mac OS X 10.6
  • Xcode 3.2.1 (iPhone SDK, nenhum plug-in)
Foi útil?

Solução

Não há nenhuma API pública para interagir com o WebInspector através do DOM ou cacau. Você deve apresentar um pedido de melhoria em https://bugreport.apple.com/ pedindo para este API.

InspectorController também é um detalhe de implementação interna do WebInspector e seu provável um bug que seu no site da documentação.

Outras dicas

Aqui está um código que deve ajudá-lo a abri-lo a partir de cacau programaticamente:

@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];
  }
}

Para estendê-lo para o dom, apenas expor esta função para JS.

Para aqueles confusos com a resposta de MacCaw @alex (é c ++), aqui é uma versão mais "normal" ..

em seu arquivo .m ... declarar os métodos de cabeçalho WebInspector ..

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

Em seguida, no mesmo arquivo, seja ele seu delegado app, ou WebView subclasse, ou qualquer que seja ... declarar um ivar para "segurar o inspector, e tornar um método para abri-lo, usando o seu vista instância web ou a propriedade, ou qualquer outra coisa. ...

@implementation AppController  { WebInspector *_inspector; }

- (IBAction)showInspector:(id)x {
   _inspector = _inspector = [WebInspector.alloc initWithWebView:_myWebView];
  [_inspector      detach:_myWebView];
  [_inspector showConsole:_myWebView];
}
....
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top