1

我在一个主机页面上有 2 个 IFrame,想在主机页面和 IFrame 之间建立双向通道。为此,我使用了 easyXDM 接口类,并且能够设置主机页面和 iFrame 之间的通信。

主机页面在一个域上,所有 IFrame 都在不同的域上,但所有 3 个 IFrame 都在同一个域上。

我已经使用 easyXDM 接口类在主机页面上设置了 2 个通道,并指定了所需的属性,例如本地方法、远程方法等。

主机页面有一个名为发布的本地方法,并且此发布方法在所有 IFrame 上都是远程的。

我遇到的问题是,当从一个 IFrame 调用发布方法时,会为主机页面上的所有 IFrames 通道调用发布。

主机页面上的代码如下所示:

channel1 = new easyXDM.Interface(
    {
        local: "/name.html",
        remote: "PathToIFrame1.html",
        container: document.getElelmentById('Div1')
    }
    , {
        remote: {
            receive: {}
        },
        local: {
            publish: { method: function () { } }
        }
    }
    );

channel2 = new easyXDM.Interface(
    {
        local: "/name.html",
        remote: "PathToIFrame2.html",
        container: document.getElelmentById('Div2')
    }
    , {
        remote: {
            receive: {}
        },
        local: {
            publish: { method: function () { } }
        }
    }
    );

IFrame 端的代码如下所示:

remote = new easyXDM.Interface({}, 
            {
            remote: {
                publish: {
                    isVoid: true
                }
            },
    local: {
        Receive: {
            isVoid: true,
            method: function (a, b) {                  

            }
        }            
    }

   });

}

当从 IFrame 端调用发布方法时,通道 1 和通道 2(在主机端)的发布方法都被调用。

有人可以建议这里可能有什么问题。

4

0 回答 0