Как я могу программно всплывать веб-инспектор Webkit из моего объекта WebView?

Как я могу всплывать веб-инспектор Webkit из моего объекта WebView программно?

У меня получается чтобы включить веб-инспектор Webkit на моем WebView. Он работает хорошо, и теперь я могу открыть его, нажав "проверить элемент" в контекстном меню. И я хочу сделать это с помощью кнопки. Но я не мог найти правильный способ сделать это. Мои знания DOM 10 лет, очень новичок в HTML DOM в настоящее время. Есть ли способ сделать это?

Я нашел класс документ: InspectorController. Я думаю, это своего рода ключ. Но я не могу знать, какой объект выставляет и как я могу это использовать.

среда:

  • Mac OS X 10.6
  • Xcode 3.2.1 (iPhone SDK, без плагина)

3 ответов


нет публичного API для взаимодействия с WebInspector через DOM или Cocoa. Вы должны подать запрос на улучшение по адресуhttps://bugreport.apple.com/ запрос этого API.

InspectorController также является внутренней деталью реализации WebInspector и его вероятной ошибкой, которая находится на веб-сайте документации.


вот код, который должен помочь вам открыть его из cocoa программно:

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

чтобы расширить его до dom, просто выставьте эту функцию JS.


для тех, кто смущен ответом @alex MacCaw (это c++), вот более "нормальная" версия..

в своем ... объявите методы заголовка WebInspector..

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

тогда в том же файле, будь то ваш делегат приложения, или подкласс WebView, или все... объявите ivar, чтобы " держать инспектора и сделать метод, чтобы открыть его, используя экземпляр или свойство веб-представления или что-то еще. ...

@implementation AppController  { WebInspector *_inspector; }

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