關於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;
}
以上,問題解決