Como posso aparecer Inspector Web do Webkit do meu objeto WebView de programação?
-
19-09-2019 - |
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)
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];
}
....