如何以编程方式从WebView对象中弹出Webkit的Web Inspector?
我在WebView上成功to enable Webkit's Web Inspector。 它运行良好,现在我可以通过单击上下文菜单中的“检查元素”来弹出它。 我想用我的按钮做到这一点。但我找不到合适的方法来做到这一点。 我的DOM知识已有10年历史,是当今HTML DOM的新手。 有没有办法做到这一点?
我找到了一个班级文件:InspectorController。我认为这是一种关键。但是我不知道暴露了什么对象以及如何使用它。
环境:
答案 0 :(得分:11)
这里有一些代码可以帮助你以编程方式从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。
答案 1 :(得分:5)
对于那些被@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];
}
....
答案 2 :(得分:3)
没有公共API可以通过DOM或Cocoa与WebInspector进行交互。您应该在https://bugreport.apple.com/提交增强请求,要求提供此API。
InspectorController也是WebInspector的内部实现细节,它可能是文档网站上的错误。