部署web系統的時候,發現了跨域問題,子系統是用Iframe嵌入到系統里面的,導致父窗口獲取子系統的webService和圖片時發現跨域問題,如下圖所示:
問題1:父窗口獲取子系統的對象跨域
原因:用這個方式直接傳遞參數會涉及到跨域問題
父窗體傳遞參數:
window.MonitorStationInfo.ID= selectedRow.ID;//父窗體傳遞參數
子窗體獲取參數:
var pointid=window.parent.parent.MonitorStationInfo.ID//子窗體獲取參數
解決辦法:使用Cookie傳遞參數
父窗體傳遞參數:
document.cookie = "pointid=" + escape(row.MonitorID);//父窗體通過Cookie保存參數
子窗體獲取參數:
var arr = document.cookie.match(new RegExp("(^|)pointid=([^;]*)(;|$)")); var pointid = unescape(arr[2]);//子窗體獲取父頁面通過Cookie傳遞過來的參數
問題2:在父窗體顯示子系統來源的圖片跨域
再點擊子窗口里面的圖片時,會在父窗口彈出放大的圖片,如下圖所示:
點擊前:
點擊后
實際效果:
原因:
在使用jquery動態加載放大的圖片時,我是使用系統頂層的document(top.document)來操作dom的
這樣會在父窗體顯示放大的圖片導致跨域
解決辦法:
讓放大的圖片在子系統中顯示:在使用jquery動態加載放大的圖片時,使用子系統的document(window.parent.document)來操作dom的