Когда создается представление вашего плагина, WebKit вызывает метод +plugInViewWithArguments:
основного класса вашего представления.
Параметр arguments этого метода представляет собой словарь, к которому можно обращаться за различной информацией. В вашем случае вам нужен объект, соответствующий WebPlugInContainerKey
.
Это объект, соответствующий неофициальному протоколу WebPlugInContainer
. Если это не nil
, вы можете запросить у этого объекта -webFrame
, который возвращает объект WebFrame
. Затем вы можете запросить у объекта WebFrame
его -webView
.
Затем вы можете создать свой плагин и сохранить ссылку на WebView
.
YourPluginView.h:
#import <Cocoa/Cocoa.h>
#import <WebKit/WebKit.h>
@interface YourPluginView : NSView <WebPlugInViewFactory>
{
WebView* webViewIvar;
}
- (id)initWithWebView:(WebView *)aWebView;
@end
YourPluginView.m:
//the WebPlugInViewFactory protocol required method
+ (NSView *)plugInViewWithArguments:(NSDictionary *)arguments
{
WebView* containerView = [[[arguments objectForKey:WebPlugInContainerKey] webFrame] webView];
YourPluginView* view = [[self alloc] initWithWebView:containerView];
return view;
}
- (id)initWithWebView:(WebView *)aWebView
{
self = [super init];
if(self)
{
webViewIvar = [aWebView retain];
}
return self;
}
- (void)dealloc
{
[webViewIvar release];
[super dealloc];
}