一個修改密碼的需求(具體:一套修改密碼的代碼邏輯步在另外一套服務器上php寫的而且是https:172.16.2.6, 要嵌入在oa系統裏http:172.16.20.36)php
// 在頁面寫入一個div開始隱藏,在點擊忘記密碼的時候給這個div裏面建立一個iframe,讓其顯示 function newforgotPassword(){ $('#myDiv').show().width('100%').css('background','rgba(0,0,0,0.2)'); var iframe = document.createElement('iframe'); iframe.scrolling = 'no'; iframe.setAttribute('id','iframe'); iframe.setAttribute('name','iframename'); iframe.style.border = 'none'; iframe.src = "https://172.16.2.6/resetpwd/"; // iframe.style.height = '100%'; // iframe.style.width = '100%'; $('#myDiv').append(iframe); $('.mask').show(); }
踩坑開始:css
如圖所示整個彈框都是內嵌的頁面,出現的問題是:iframe內嵌的頁面點擊關閉之後,父頁面不知道, 而後建立的iframe依然存在 就會擋住後面的登錄輸入框 沒辦法再次點擊只能從新刷新頁面 爲了解決這個問題 想到的方案:1 在子頁面點擊關閉的時候發出來一個事件,而後父頁面接收事件
① $(父頁面元素選擇器, window.parent.document); ② window.parent.$(父頁面元素選擇器)window.parent.父頁面方法;
同事說 試試domain 試過也不行 (這兩個域名必須屬於同一個基礎域名!並且所用的協議,端口都要一致才能夠使用domain) 2 父頁面爲A.com iframe彈框爲B.com 再建立一個html 裏面只寫關閉彈框的方法 再經過iframe的方式嵌入到iframe(B.com)的彈框中 可是他屬於A.com 這樣關閉方法和父頁面就是同域 就能夠關閉彈框以後 隱藏iframe以及div 問題解決? 然鵝 並無 以上兩種方法 都不行 都會報錯 報跨域的錯 可能https http 的錯也有 最終解決辦法 再父頁面寫了一個關閉按鈕 擱到了iframe關閉按鈕那裏 這樣就能夠解決問題了 變通!!!