1. 程式人生 > >關於js頁面之間跨域傳值問題 opener parent等等 使用window.returnValue

關於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;

}

以上,問題解決