在不同的iframe中共享/更改全局变量

时间:2015-06-23 04:33:36

标签: javascript html iframe cross-domain

我的网站有以下条件:

在Website1中,我有一个名为" Global.Name"的全局变量。

当Website1,Subsite1-1和Subsite1-2在同一个域中时,我可以使用top作为这3个站点的门。 类似的代码如下。



ParentChilds
------------
1
2
3
4
5
6
13
14
15
16




但是,目前的情况是,Website1和subsite1-1& subsite1-2的域名现在不同了。

我现在的状况:

Website1域名:csm.Mysite.com

Subsite1-1和Subsite 1-2域名:csmnew.Mysite.com

现在跨域政策阻止我使用top作为门。

在这种特定情况下,是否有解决方案来获取/设置全局变量? (我的意思是父母和孩子有不同的子域名。)

1 个答案:

答案 0 :(得分:0)

我已经编写了以下代码来替换'top'对象。

var mySpace = {};

mySpace.common = {
  getDomainTop: function(windowObj) {
    var instance = this;
    try {
      windowObj.frameElement = windowObj.frameElement;
      if (windowObj.frameElement === null) {
        return windowObj;
      } else {
        instance.getDomainTop(windowObj.parent);
      }
    } catch (e) {
      return windowObj;
    }
  }
};

Object.defineProperty(mySpace, "top", {
  get: function() {
    var instance = this;
    try {
      top.frameElement = top.frameElement;
      return top;
    } catch (e) {
      return instance.common.getDomainTop(window);
    }
  }
});

这部分适用于我的病情。 我需要做的另一件事是将'top'替换为'mySpace.top',如下所示

//top.Global.Name = "Jack";
mySpace.top.Global.Name = "Jack";