
在layer中如果iframe彈窗頁面為跨域請求時返回要關閉父級窗口時,會出現錯誤: Blocked a frame with origin “xxx“ from accessing a cross-origin frame
主要原因:
內嵌 iframe 頁面,一般使用 window.parent 或 window.top 來獲取父頁面的 window 對象
在子頁面 想使用(或傳遞給) 父頁面的參數,但是原因兩個的域名不一樣,所以會出現跨域問題。
解決方法:
1、父頁面監聽 message,寫法固定
window.addEventListener('message', function (e) {
console.log(e)
})
2、子頁面發送 message 消息,并附帶參數
// window.parent 是 iframe 子頁面獲取父頁面的 window 對象
// 后面的 * 號就是處理跨域問題的,任何域名都不會出現跨域問題
window.parent.postMessage("需要傳遞的參數", '*')
// 也可以指定傳送域名地址,這個域名不會出現跨域問題,寫父頁面(接收)域名地址
window.parent.postMessage("需要傳遞的參數", 'http://0.0.0.0:8080')
如果不跨域的話,關閉方法為:
layer.open({ content:data ,btn: ["確定"] ,yes: function (index,layero) { let indexOfFather = parent.layer.getFrameIndex(window.name); parent.layer.close(indexOfFather); //關閉頁面 window.parent.location.reload(); //刷新父頁面 } })
【版權聲明】:本站內容來自于與互聯網(注明原創稿件除外),供訪客免費學習需要。如文章或圖像侵犯到您的權益,請及時告知,我們第一時間刪除處理!謝謝!