不同域上的两个Web应用程序之间的Javascript通信

时间:2013-10-09 01:37:20

标签: javascript drupal cross-domain jsonp

我有一个网络应用,当客户点击Drupal网页内容页面上的链接时,该应用会在新的弹出窗口中启动。

当用户到达Web应用程序工作流程中的某个页面时,我想向(仍然打开的)Drupal页面发送消息并向其传递一些信息(例如我在工作流程中的位置)。

当Drupal网站收到此“消息”时,它会调用一些javascript来更新当前显示的页面内容。

基本上,这是一种在一个域上执行Javascript的方法,来自另一个域中的Javascript函数。

我可以控制Drupal站点和Web应用程序,因此任何需要在任一端部署的javascript都不是问题。 但请注意,这两个网站位于不同的域中,因此我需要实现跨域工作的内容

我不知道如何实现这一点,到目前为止我已经考虑过JSON-P了。

1 个答案:

答案 0 :(得分:0)

您的网络应用程序都在客户端运行,因此您无需向服务器询问如何与您已打开的窗口联系。

因此,为了节省时间和精力,请在客户端的窗口之间直接进行通信。

要将消息发送到另一个html页面,您需要先在变量中保留打开的窗口,如下所示:

// This code is inside the html file that open 
// the drupal site.
var windowOpened = window.open("drupalUrl.html");

但是,在drupalUrl.html你需要创建一个全局函数,所以你可以像这样调用:

windowOpened.globalFunction(param1, param2);

正如我所说,在drupalUrl.html中你需要创建一个函数:

function globalFunction(param1, param2){
    //show your message
}