8

プログラムで WebView オブジェクトから Webkit の Web インスペクターをポップアップするにはどうすればよいですか?

WebView でWebkit の Web インスペクターを有効にすることに成功しました。これはうまく機能しており、コンテキスト メニューの [Inspect Element] をクリックしてポップアップできるようになりました。そして、私はプッシュボタンでこれを行いたいです。しかし、これを行う適切な方法が見つかりませんでした。私の DOM の知識は 10 年前のもので、最近の HTML DOM の初心者です。これを行う方法はありますか?

クラス ドキュメントが見つかりました: InspectorController。これは一種の鍵だと思います。しかし、どのオブジェクトが公開されているのか、これをどのように使用できるのかわかりません。

環境:

  • Mac OS X 10.6
  • Xcode 3.2.1 (iPhone SDK、プラグインなし)
4

3 に答える 3

11

プログラムでココアから開くのに役立つコードを次に示します。

@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 に公開するだけです。

于 2010-01-26T19:21:01.933 に答える
5

@alex MacCaw の回答 (c++ です) に混乱している人のために、より「通常の」バージョンを示します。

ファイルで... WebInspectorヘッダーメソッドを宣言します.m..

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

次に、その同じファイルで、アプリのデリゲート、WebView サブクラス、またはその他のもの...「インスペクターを保持し、Web ビューのインスタンスまたはプロパティなどを使用して、それを開くメソッドを作成する ivar を宣言します。. ..

@implementation AppController  { WebInspector *_inspector; }

- (IBAction)showInspector:(id)x {
   _inspector = _inspector = [WebInspector.alloc initWithWebView:_myWebView];
  [_inspector      detach:_myWebView];
  [_inspector showConsole:_myWebView];
}
....
于 2013-10-31T06:15:27.623 に答える
3

DOM または Cocoa を介して WebInspector と対話するためのパブリック API はありません。この API については、 https://bugreport.apple.com/で拡張リクエストを提出する必要があります。

InspectorController は、WebInspector の内部実装の詳細でもあり、ドキュメント Web サイトにあるバグである可能性があります。

于 2010-01-24T00:54:46.633 に答える