NVM
安裝包:
Releases · coreybutler/nvm-windows · GitHub
git 倉庫分支名稱改了
image.png
window.open
Q:
在 A 頁面涣旨,通過 window.open
打開 B 頁面虱而。回到 A 頁面开泽,通過 window.open
打開 C 頁面牡拇,為什么有時候是在新標(biāo)簽頁打開,有時候是覆蓋了 B 頁面穆律?
A:
在這種情況下惠呼,A 頁面通過 window.open
打開 B 頁面后,用戶再回到 A 頁面并嘗試打開 C 頁面時峦耘,C 頁面是否在新標(biāo)簽頁中打開或覆蓋 B 頁面剔蹋,主要受到以下幾個因素的影響:
-
窗口和標(biāo)簽頁的上下文:
- 當(dāng)你從 A 頁面打開 B 頁面時,B 頁面通常是在一個新的標(biāo)簽頁或窗口中打開辅髓。
- 返回到 A 頁面后再次使用
window.open
打開 C 頁面時泣崩,如果沒有指定目標(biāo)少梁,C 頁面可能會在 B 頁的上下文中打開,這可能導(dǎo)致覆蓋 B 頁面矫付。
-
使用的目標(biāo)參數(shù):
-
window.open
的第二個參數(shù)(目標(biāo))可以指定新的窗口或標(biāo)簽頁的行為凯沪。例如:- 使用
window.open('C.html', '_blank')
可以強制在新的標(biāo)簽頁中打開。 - 如果目標(biāo)是一個已經(jīng)存在的頁面的名稱买优,如
window.open('C.html', 'B')
妨马,那么 C 頁面將會在 B 頁中打開,導(dǎo)致覆蓋杀赢。
- 使用
-
-
用戶的瀏覽器設(shè)置:
- 不同的瀏覽器和用戶所配置的設(shè)置可能影響頁面的打開方式烘跺。例如,某些瀏覽器可以配置在新標(biāo)簽頁中打開所有鏈接脂崔,而其他設(shè)置可能會導(dǎo)致鏈接在當(dāng)前標(biāo)簽頁中打開滤淳。
-
瀏覽器行為:
- 某些瀏覽器在打開頁面時對新標(biāo)簽頁和窗口的管理方式可能存在不同。在某些情況下砌左,瀏覽器會優(yōu)先選擇復(fù)用現(xiàn)有標(biāo)簽頁脖咐。
-
JavaScript 回調(diào)或事件:
- 如果在 A 頁面與 C 頁面之間有 JavaScript 交互(如通過 postMessage),這可能影響 C 頁面打開的方式绊困。
為了確保 C 頁面始終在新標(biāo)簽頁中打開文搂,推薦始終使用 _blank
作為目標(biāo)參數(shù)适刀,例如:
window.open('C.html', '_blank');
這樣可以減少覆蓋 B 頁的可能性秤朗,確保用戶體驗的一致性。
例子
const subsystemWindowName = JSON.stringify({
token: $token.get(),
appName: item.name,
});
const url = router.resolve({ path: '/index' }).href;
subsystemWindow = window.open(url, subsystemWindowName);