cocoa插件调用网页javascript
我有一个嵌入 html 页面的可可插件。该页面还在标题中定义了一个 javascript 函数。我想从我的插件中以编程方式调用这个 javascript 函数。在 IE/firefox/chrome 插件下这很容易。这在 cocoa/safari 下是如何工作的?我认为问题归结为访问页面 webview 并获取 webScriptObject。一旦我有了这个,我就可以使用“callWebScriptMethod” af 如下:
[scriptObject callWebScriptMethod:@"sayHello" withArguments:[NSArray arrayWithObjects:"@chris"]];
但是,我不知道如何访问托管我的插件的页面的 webview。我的插件被定义为“WASafariPluginView:NSView”,并且我在其对象层次结构中没有看到任何可用于获取“父”Web 视图的内容。
谢谢,
I have a cocoa plugin embedded on an html page. This page also defines a javascript function in the header. I'd like to programmatically call this javascript function from my plugin. This was easy enough under IE/firefox/chrome plugins. How does this work under cocoa/safari? I think the problem comes down to accessing the pages webview and getting the webScriptObject. Once I have this I can use "callWebScriptMethod" af follows:
[scriptObject callWebScriptMethod:@"sayHello" withArguments:[NSArray arrayWithObjects:"@chris"]];
However, I don't know how to access the webview of the page hosting my plugin. My plugin is defined as "WASafariPluginView : NSView " and I don't see anything in its object hierarchy I can use to obtain the "parent" webview.
Thanks,
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
实例化插件视图时,WebKit 会调用视图主类的 +plugInViewWithArguments: 方法。
该方法的arguments 参数是一个字典,您可以查询它以获取各种信息。在您的情况下,您需要与
WebPlugInContainerKey
对应的对象。这是一个符合
WebPlugInContainer
非正式协议的对象。如果不是nil
,您可以向该对象询问其-webFrame
,它会返回一个WebFrame
对象。然后,您可以向WebFrame
对象询问其-webView
。然后,您可以实例化您的插件并存储对
WebView
的引用。YourPluginView.h:
YourPluginView.m:
When your plug-in view is instantiated, WebKit calls the
+plugInViewWithArguments:
method of your view's main class.The arguments parameter to that method is a dictionary that you can query for various information. In your case, you want the object corresponding to the
WebPlugInContainerKey
.This is an object conforming to the
WebPlugInContainer
informal protocol. If it is notnil
, you can ask this object for its-webFrame
, which returns aWebFrame
object. You can then ask theWebFrame
object for its-webView
.You can then instantiate your plug-in and store a reference to the
WebView
.YourPluginView.h:
YourPluginView.m: