1. 程式人生 > 其它 >JS 瀏覽器視窗控制

JS 瀏覽器視窗控制

技術標籤:應用場景windowjswebjavascript

業務場景:老系統裡(非SPA) 在主頁面有很多子模組頁面,在點選去到子模組a頁面開啟新視窗,如果a頁面已經在瀏覽器開啟則不開啟新的視窗,切換至a頁面視窗

首先,瞭解window物件
1.window.open

window.open('http://www.baidu.com') //開啟一個新頁面 返回開啟的window物件本身

2.window.focus()

window.focus() //聚焦到當前頁面

3.window.closed

window.closed  //可以拿到 window的開啟關閉狀態  true關閉  false開啟

然後梳理思路

1.判斷頁面是否被開啟,以及頁面的開啟關閉狀態closed 
2.開啟一個新的頁面時,存放被開啟的window物件// obj[url] = window.open(url)
3.開啟一個已經開啟的頁面時, focus()聚焦到該頁面 //obj[url].focus()

最後code

    <body>
    <button message="kk" class="pink" onclick="openBrowser('b')">click to B</button>
    <
button message="kk" class="pink" onclick="openBrowser('c')">click to C</button> <script> // # 切換到當前最新開啟的視窗 var objWin = {}; function openBrowser(url) { let target; if (url == "b") { target = "http://127.0.0.1:5500/bhref.html"
; } else { target = "http://127.0.0.1:5500/chref.html"; } //判斷是否開啟 console.log(objWin[url]); if (objWin[url] == null || objWin[url].closed) { //新開啟的頁面window存起 objWin[url] = window.open(target); console.log(objWin[url]); } else { //已經開啟的頁面 直接聚焦切換 objWin[url].focus(); } console.log(objWin); } </script> </body>

丟擲問題:如果使用者重新整理頁面,儲存的變數都被清除了,功能失效

你一定會想,存到storage裡面不就好了,直接給出結論:json轉字串出現 迴圈引用問題

sessionStorage.setItem('objWin',JSON.stringify(objWin)) //Error
JSON.stringify出現 “Converting circular structure to JSON

待續…