弹出chrome NPAPI扩展,重定向到新选项卡

时间:2010-10-21 16:32:52

标签: google-chrome npapi

嘿,我有一个简单的问题:

我有一个Chrome扩展程序,可以在工具栏中添加一个弹出页面。它接受来自用户的输入,然后调用生成XML文件的NPAPI dll。我希望能够在NPAPI dll完成其工作之后创建一个新选项卡,该选项卡将打开到新生成的XML页面。

任何人都可以帮我解决这个问题吗?

感谢。

2 个答案:

答案 0 :(得分:0)

您可以通过NPN_Invoke让您的NPAPI与Jav​​aScript进行通信。 NPN_Invoke将允许您调用给定NPObject上的方法。

例如,您可以构建方法NPN_GetStringIdentifier,并使用它在弹出窗口中执行方法。

您可以参考此article,了解如何通过NPAPI插件与JavaScript进行通信。显示的示例有一个简单的console.debug("Hello from C++")

更新

我注意到你想要立即打开xml文件。您是否将XML文件保存在扩展文件夹的位置?

C:\Users\[user]\AppData\Local\Google\Chrome\User Data\Default\Extensions\[extension_id]\[extension_version]

然后您可以使用chrome.extension.getURL([file]);

打开它

但是,如果您返回XML文件并在扩展程序中打开它会很棒。

答案 1 :(得分:0)

理想情况下,您不会将UI行为的逻辑放入插件中,而是放在扩展中。该插件应该告诉扩展名XML文件所在的位置,扩展名应该处理其余部分。

这可以通过两种方式完成:

同步返回位置很简单:直接从插件的Invoke()实现开始工作,并将包含文件位置的字符串返回给脚本。
这当然有阻止main-(和GUI-)线程的缺点,直到处理完成为止,因此在没有快速完成处理时没有选择。

异步返回它有点工作:理想情况下,您允许扩展指定应在处理完成时调用的回调函数。这可以通过相应地处理addEventListener()或允许脚本在启动XML处理时将回调作为参数传递来实现。然后,XML处理函数启动或提供执行实际工作的另一个线程并立即返回。处理完成后,您可以在存储的函数对象上调用NPN_InvokeDefault()来调用它 注意:调用JavaScript总是必须在主线程上完成。