Как я могу программно всплывать веб-инспектор 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];
}
....