javascript与其托管java或c ++应用程序之间的通信

时间:2012-04-10 13:29:23

标签: java javascript c++

我试图找出是否有标准或推荐的方式从javascript通信到嵌入浏览器小部件的应用程序,反之亦然。托管应用程序可以用java或c ++编写,也可以在Windows和Unix平台上运行,但javascript可以在两个客户端共享。

到目前为止,我读过:

  • window.external(这似乎是IE特定的,因此在Unix上不起作用。)
  • LiveConnect(这似乎是java和mozilla特有的,因此它不适用于基于IE或c ++的应用程序。)
  • SWT的浏览器小部件具有一些此功能,但这将是一个仅限Java的解决方案..

还有哪些其他选择?

谢谢!     希亚姆

2 个答案:

答案 0 :(得分:0)

我们有一个承载微软WebBrowser object(IE)的VB6应用程序。我们使用了一种简单的URL拦截机制来促进浏览器和托管应用程序之间的通信。由于浏览器控件具有before navigate接口,因此我们可以提取URL并检查命令并取消导航事件(因为它适用于托管应用程序)或让它通过(因为它是普通网址)。

我们在Javascript或HTML链接标记中使用了app://commandName?arg1=val&arg2=val之类的内容。

然后在浏览器的BeforeNavigate事件中,我们检查app://的网址,如果我们知道,我们知道浏览器正在向父应用程序发送消息。

简单但有效(无论如何我们的需要)。

修改

还应该提到大多数嵌入式浏览器也有操纵DOM的机制。请记住,您应该能够提取信息(HTML节点)并随意注入信息。

答案 1 :(得分:0)

JavaScript具有XMLHttpRequest API,可以将数据发送到服务器并从服务器检索数据。将此API与使用XML或JSON格式化的消息一起使用时,将其指定为AJAX

AJAX可用于实现您给出的示例,HTML / javascript中的树节点在扩展时从服务器检索子节点列表。 请注意,使用AJAX时,服务器可能使用任何语言(C,Java,Python,Ruby等)编写。

我建议你阅读有关AJAX的内容。在熟悉了AJAX之后,您可以阅读web services一些内容。 Web服务是一种通过WEB以任意编程语言开发的2个应用程序的通信方法。