关于js页面之间跨域传值问题 opener parent等等 使用window.returnValue

首先解释一下returnValue

returnValue是javascript中html的window对象的属性,目的是返回窗口值,当用window.showModalDialog函数打开一个模态窗口时,用于返回窗口的值。

使用js做了一个通用选人控件

父页面为短信发送页面,点击选人按钮进行选人,选人页面为另一个域名下的页面

父页面:smscenter.test.com

选人页面:cus.test.com



js中使用如下代码获取选人页面的值

var returnValue = window.showModalDialog(url, condition, params);

发现选人之后returnValue为undefined。

经研究解决方案如下,设置域

选人页面和父页面都增加如下代码

$(document).ready(function() {

  document.domain = "test.com";

});


以上的处理解决了由于跨域导致IE下returnValue为undefined的情况。

对于chorme浏览器,需要额外增加如下代码

选人页面:

将 window.returnValue = selectedUsers.Values();此行代码

替换为如下代码:
        if (window.opener != undefined) {
            window.opener.returnValue = selectedUsers.Values();
        }
        else if(window.parent != undefined)
        {
            window.parent.returnValue = selectedUsers.Values();
        }
        else {
            window.returnValue = selectedUsers.Values();

        }

父页面:

    var returnValue = window.showModalDialog(url, condition, params);

在获取returnValue值这行代码下面追加如下代码

if (returnValue == undefined) {
    returnValue = window.returnValue;

}


以上,问题解决

猜你喜欢

转载自blog.csdn.net/ujm097/article/details/79778764