如何阻止window.open自动切换到新打开的标签页?
解决按钮重复打开新标签页的问题
核心思路是给window.open()指定一个固定的窗口名称,替换掉默认的_blank,这样浏览器会复用该名称对应的标签页,而非每次新建。
修改后的内联代码版本:
<button onclick=" const random = Math.random(); const searchUrl = `https://www.bing.com/search?q=scp+agent+${random}+cool&qs=n&form=QBRE&sp=-1&pq=scp+agent+${random}+cool&sc=10-3&sk&cvid=3A6D4119FA794E4294E48112AB40166D&ghsh=0&ghacc=0&ghpl&safesearch=strict&adlt=strict`; window.open(searchUrl, 'randomSearchTab'); ">Open</button>
如果更倾向于结构清晰的非内联写法(推荐):
<button id="openRandomSearchBtn">Open</button> <script> document.getElementById('openRandomSearchBtn').addEventListener('click', () => { const random = Math.random(); const searchUrl = `https://www.bing.com/search?q=scp+agent+${random}+cool&qs=n&form=QBRE&sp=-1&pq=scp+agent+${random}+cool&sc=10-3&sk&cvid=3A6D4119FA794E4294E48112AB40166D&ghsh=0&ghacc=0&ghpl&safesearch=strict&adlt=strict`; window.open(searchUrl, 'randomSearchTab'); }); </script>
原理说明
把window.open的第二个参数从_blank改为自定义的固定名称(比如randomSearchTab)后:
- 首次点击按钮时,浏览器会新建一个名为
randomSearchTab的标签页并加载链接 - 后续点击时,浏览器会直接切换到已存在的
randomSearchTab标签页,并用新的随机链接替换原有内容
内容的提问来源于stack exchange,提问作者Doxr
相关产品推荐
相关产品推荐

