JS關(guān)閉子窗口并且刷新上一個(gè)窗口的實(shí)現(xiàn)示例
在開(kāi)發(fā)后臺(tái)項(xiàng)目的時(shí)候產(chǎn)品那邊提出了這個(gè)一個(gè)需求:用戶點(diǎn)擊“選擇模板”的時(shí)候會(huì)彈出一個(gè)新窗口,在新窗口選擇模板點(diǎn)擊確定后,會(huì)關(guān)閉當(dāng)前的新窗口,并且原來(lái)的那個(gè)窗口自動(dòng)顯示用戶在新窗口的選擇項(xiàng)。
這樣會(huì)涉及到一個(gè)技術(shù)點(diǎn),就是怎么通過(guò)JS來(lái)實(shí)現(xiàn)關(guān)閉子窗口并且刷新上一個(gè)窗口。
百度了很久,嘗試了以下幾種方案:
方案一:通過(guò)在子窗口的關(guān)閉函數(shù)中加入以下代碼,即可實(shí)現(xiàn)父窗口的刷新。
window.opener.location.href = window.opener.location.href;
方案二:也是在子窗口的關(guān)閉函數(shù)中加入以下代碼:
function closeMeAndReloadParent(){
opener.location.reload();
window.close();
}
以及方案三window.opener.location.reload();
方案四window.opener.reload();等等
結(jié)果發(fā)現(xiàn)以上方案全都不行,且都會(huì)報(bào)以下這種錯(cuò)誤:
scrollbymyself.html:96 Uncaught DOMException: Blocked a frame with origin "null" from accessing a cross-origin frame.
不知道是我實(shí)現(xiàn)方式有問(wèn)題還是別的未知原因,沒(méi)方法,需求在那里,總是需要解決的,經(jīng)過(guò)親身實(shí)踐,總結(jié)出了下面這種可行方法,雖有明顯缺點(diǎn),但也總算了解決了需求。
父界面的代碼
<span onclick="openNewWindow()">點(diǎn)擊打開(kāi)新窗口</span>
<input type="text" class="parent-input">
<script>
function openNewWindow() {
document.querySelector(".parent-input").focus()
window.open("scrollbymyself.html", "new window");
}
document.querySelector(".parent-input").onfocus = function () {
console.log("獲取到了焦點(diǎn),可以在這里寫(xiě)邏輯代碼")
}
console.log("頁(yè)面重新刷新")
</script>
子界面的代碼
<span onclick="closeCurrentWindow()">點(diǎn)擊關(guān)閉當(dāng)前窗口,并且更新上一個(gè)窗口的信息</span>
<script>
function closeCurrentWindow() {
console.log(window)
opener.location.reload();
window.close()
}
</script>
把上面的代碼應(yīng)該到項(xiàng)目中,即可實(shí)現(xiàn)需求,如果不想讓input顯示在界面上,可以添加opacity: 0;樣式屬性。
注意:
添加display: none;屬性的話,并不會(huì)觸發(fā)input的獲取焦點(diǎn)的事件函數(shù)。
到此這篇關(guān)于JS關(guān)閉子窗口并且刷新上一個(gè)窗口的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)JS關(guān)閉子窗口內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于js new Date() 出現(xiàn)NaN 的分析
在一個(gè)項(xiàng)目中需要進(jìn)行日期的格式化,后臺(tái)傳到前端是時(shí)間的整數(shù)(Date.getTime),當(dāng)后臺(tái)數(shù)據(jù)返回字符串時(shí),發(fā)現(xiàn)轉(zhuǎn)換日期時(shí)在ie下變成NaN,但是真的是這樣嗎?接下來(lái)我們慢慢分析2012-10-10
js實(shí)現(xiàn)滑動(dòng)進(jìn)度條效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)滑動(dòng)進(jìn)度條效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08
JavaScript利用正則表達(dá)式替換字符串中的內(nèi)容
本文主要介紹了JavaScript利用正則表達(dá)式替換字符串中內(nèi)容的具體實(shí)現(xiàn)方法,并做了簡(jiǎn)要注釋,便于理解。具有一定的參考價(jià)值,需要的朋友可以看下2016-12-12
微信小程序登錄對(duì)接Django后端實(shí)現(xiàn)JWT方式驗(yàn)證登錄詳解
這篇文章主要介紹了微信小程序登錄對(duì)接Django后端實(shí)現(xiàn)JWT方式驗(yàn)證登錄詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07
js cavans實(shí)現(xiàn)靜態(tài)滾動(dòng)彈幕
這篇文章主要為大家詳細(xì)介紹了js cavans實(shí)現(xiàn)靜態(tài)滾動(dòng)彈幕,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
詳解JavaScript對(duì)象轉(zhuǎn)原始值
這篇文章主要為大家介紹了vue組件通信的幾種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2021-12-12
vscode+gulp輕松開(kāi)發(fā)小程序的完整步驟
這篇文章主要給大家介紹了關(guān)于vscode+gulp輕松開(kāi)發(fā)小程序的完整步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10

