Я писал плагин для браузера на основе Mac NPAPI для преобразования файла с пользовательским mimetype (скажем, «application / x-foo») в представление HTML, которое затем можно просматривать непосредственно в браузере.Эти файлы обычно обслуживаются напрямую, поэтому меня больше заботит поддержка просмотра всей страницы, а не встроенного просмотра с помощью тегов <object>
.
В Firefox это было относительно просто: я звонюNPN_NewStream
с mimetype text/html
, запишите преобразованный HTML-код в поток, а затем очистите его с помощью NPN_DestroySteam
.Браузер автоматически обрабатывает запрос на новый поток HTML и отображает данный HTML-код во вкладку или окно.Довольно стандартный.
Для Safari, однако, NPN_NewStream
не реализован (и я проверял исходный код WebKit).Ранее я мог использовать API WebKitPlugin.В Safari 5.1 этот API исчез.
Я думал, что смогу создать WebView в обработчике событий рисования, например:
NSRect rect = NSMakeRect(0, 0, obj->window.width, obj->window.height);
//...
WebView* webView = [[WebView alloc] initWithFrame:rect frameName:nil groupName:nil];
[[webView mainFrame] loadHTMLString:@"<html><head><title>This is a message from my plug-in!</title></head><body><p><strong>This is a message from my plug-in!</strong></p></body>/html>" baseURL:[NSURL URLWithString:@"http://example.com"]];
[webView drawRect:rect];
и увидеть его в браузере.Но все, что нужно, это сделать серый экран без содержимого, как будто он не нарисован.Если я заменим WebView
на NSTextView
и установлю его строку в HTML, все отрисовывается просто отлично, но, конечно, HTML не визуализируется NSTextView
.
Мой вопрос сводится к: Есть ли хороший способ визуализации HTML-кода в окне Safari из плагина NPAPI?Или, если это не сработает, в окно Google Chrome?Или какой-то другой подход, который позволяет мне обрабатывать пользовательский тип MIME и отображать какое-то его HTML-представление?