如何以编程方式从 WebView 对象中弹出 Webkit 的 Web Inspector?

发布于 2024-08-17 04:52:24 字数 705 浏览 4 评论 0原文

如何以编程方式从 WebView 对象中弹出 Webkit 的 Web Inspector?

我成功了 在我的 WebView 上启用 Webkit 的 Web Inspector。 它运行良好,现在我可以通过单击上下文菜单上的“检查元素”来弹出它。 我想用我的按钮来做到这一点。但我找不到合适的方法来做到这一点。 我的 DOM 知识已经有 10 年了,对于当今的 HTML DOM 来说还是个新手。 有什么办法可以做到这一点吗?

我找到了一个类文档: 检查器控制器。我认为这是一种关键。但我不知道暴露了什么对象以及如何使用它。

环境:

  • Mac OS X 10.6
  • Xcode 3.2.1(iPhone SDK,无插件)

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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

屋檐 2024-08-24 04:52:24

这里有一些代码可以帮助您以编程方式从 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 即可。

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

@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.

早茶月光 2024-08-24 04:52:24

对于那些对 @alex MacCaw 的答案(它是 c++)感到困惑的人,这里有一个更“正常”的版本..

在您的 .m 文件中...声明 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 来“保存您的检查器,并使用您的 Web 视图实例或属性创建一个方法来打开它,或者任何。 ...

@implementation AppController  { WebInspector *_inspector; }

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

For those confused by @alex MacCaw's answer (it is c++), here is a more "normal" version..

in your .m file... declare the WebInspector header methods..

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

Then in that same file, be it your app delegate, or WebView subclass, or whatever... declare an ivar to "hold your inspector, and make a method to open it, using YOUR web view instance or property, or whatever. ...

@implementation AppController  { WebInspector *_inspector; }

- (IBAction)showInspector:(id)x {
   _inspector = _inspector = [WebInspector.alloc initWithWebView:_myWebView];
  [_inspector      detach:_myWebView];
  [_inspector showConsole:_myWebView];
}
....
本王不退位尔等都是臣 2024-08-24 04:52:24

没有用于通过 DOM 或 Cocoa 与 WebInspector 交互的公共 API。您应该在 https://bugreport.apple.com/ 提交增强请求,请求使用此 API。

InspectorController 也是 WebInspector 的内部实现细节,它可能是文档网站上的一个错误。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文