与同一域上的两个提供者进行通信

时间:2014-07-02 08:52:20

标签: javascript iframe easyxdm

我正在尝试将easyXDM应用到我们当前的项目中,以便用户能够在一个工作流程中使用多个系统,并且可以从单个界面进行访问。换句话说,当用户打开页面X时,应将另一个域中的应用程序加载到iframe中供用户使用(用户必须先进行身份验证)。

任务本身要求应根据某些条件打开应用程序的某个部分(假设对于来自部门A的用户,我们应该在所述应用程序中打开表单Af。)

所以这是我在这里尝试编写的逻辑:

  1. 用户打开第X页(消费者)
  2. 将iframe与应用程序的登录页面(Provider1)加载到Consumer上的iframe
  3. 用户登录应用程序
  4. 消费者的JS接收来自Provider1
  5. 的标头
  6. Consumer上的JS使用先前收到的标头加载Provider2并告诉Provider2导航到某个表单
  7. Provider2内的JS从Consumer接收消息并导航到此应用程序内的某个表单。

  8. 这就是我现在所得到的(简单来自easyXDM自述文件的一个简单示例):

    提供商

        var socket = new easyXDM.Socket({
            onMessage: function(message, origin){
                // do something
            }
        });
    

    消费

    var socket = new easyXDM.Socket({
        remote: "http://remote/page",
        container: "test",
        onMessage: function(message, origin){
            alert("Received '" + message + "' from '" + origin + "'");
            var socket1 = new easyXDM.Socket({
                remote: "http://remote/page2",
                container: "test",
                headers: providers2_headers,
                onMessage: function(message, origin){
                    alert("Received '" + message + "' from '" + origin + "'");            
                },
                onReady: function() {
                    this.container.getElementsByTagName("iframe")[0].style.width = "100%";
                    socket1.postMessage("Yay, it works!");
                }
            });
        },
        onReady: function() {
        this.container.getElementsByTagName("iframe")[0].style.width = "100%";
            socket.postMessage("Yay, it works!");
        }
    });
    

    问题

    如何从Provider1获取标头并使用它们加载Provider2?

0 个答案:

没有答案