views:

482

answers:

2

How can I pop up Webkit's Web Inspector from my WebView object programmatically?

I succeed to enable Webkit's Web Inspector on my WebView. It's working well, and now I can pop it up by clicking "Inspect Element" on context menu. And I want to do this with my push button. But I couldn't find a proper way to do this. My DOM knowledge is 10 years old, very newbie on HTML DOM of nowadays. Is there any way to do this?

I found a class document: InspectorController. I think this is a kind of key. But I cannot know what object exposes and how can I use this.

Environment:

  • Mac OS X 10.6
  • Xcode 3.2.1 (iPhone SDK, no plug-in)
+1  A: 

There is no public API for interacting with the WebInspector via the DOM or Cocoa. You should file an enhancement request at https://bugreport.apple.com/ asking for this API.

InspectorController is also an internal implementation detail of the WebInspector and its likely a bug that its on the documentation website.

Matt Lilek
+1  A: 

Here's some code that should help you open it from cocoa programatically:

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

To extend it to the dom, just expose this function to JS.

Alex MacCaw
I'm sorry but I cannot understand how I can apply this code to my program. It looks like C++, but I'm not good at C++.
Eonil