Javascript 如何确保窗口上只使用一个选项卡

Javascript 如何确保窗口上只使用一个选项卡,javascript,browser,Javascript,Browser,如果一个人打开了多个选项卡,它将显示一个警报,表示他们一次只能打开一个选项卡。我试图查看窗口对象,但它无法从其他选项卡访问所有URL。你可以存储cookie或会话吗?这样行吗 const openedPages=document.getElementById('opened-pages')) 常量readTabs=(值)=>{ 让tabs=value | | localStorage.getItem('openedPages')) 试一试{ tabs=JSON.parse(制表符) }捕获(e)

如果一个人打开了多个选项卡,它将显示一个警报,表示他们一次只能打开一个选项卡。我试图查看窗口对象,但它无法从其他选项卡访问所有URL。你可以存储cookie或会话吗?这样行吗

const openedPages=document.getElementById('opened-pages'))
常量readTabs=(值)=>{
让tabs=value | | localStorage.getItem('openedPages'))
试一试{
tabs=JSON.parse(制表符)
}捕获(e){
制表符=[]
}
返回数组.isArray(制表符)?制表符:[]
}
常量writeTabs=(制表符)=>{
localStorage.setItem('openedpage',JSON.stringify(制表符))
}
常量deleteTabs=(tabs,dt)=>{
对于(设i=0;i{
const success=[]
常量错误=[]
对于(让选项卡中的选项卡){
试一试{
let res=等待取数(制表符)
让url=wait res.text()
成功推送(url)
}捕获(e){
错误。推送(选项卡)
}
}
返回{成功,错误}
}
const testTabs=async(tabs)=>{
const{success,error}=wait testOpen(制表符)
if(错误长度){
删除选项卡(选项卡,错误)
}
const mess=新映射(/*{url:count}*/)
为了(让你成功){
让计数=混乱。获取(u)
设置(u,(计数?++计数:1))
}
openedPages.textContent=[…mess.entries()].map([u,c])=>`“${u}”:${c}`)。连接('\n')
}
空洞函数(){
//κСаааааааа-uniqTabUrlаааааааа
//删除页面时,uniqTabUrl将自动销毁
const uniqTabUrl=URL.createObjectURL(
新Blob([document.location.href],{type:'text/plain'})
)
const tabs=[…(新集合([uniqTabUrl,…readTabs()])).values()]
测试选项卡(选项卡)
写选项卡(选项卡)
//跟踪新标签
addEventListener('storage',({key,oldValue,newValue})=>{
如果(键=='openedPages'&&oldValue!==newValue){
接头(0)
tabs.push(…readTabs(newValue))
//如果有人删除了
如果(!制表符包括(uniqTabUrl)){
标签。推送(uniqTabUrl)
写选项卡(选项卡)
}
测试选项卡(选项卡)
}
})
//即使它不工作=>testOpen()
window.onunload=()=>{
删除选项卡(选项卡,[uniqTabUrl])
}
}()
HTML

打开的页面
打开的页面|第A页
打开的页面|第B页

据我所知,没有可靠的方法可以做到这一点,但是,您可能会对此感兴趣:这是我正在考虑使用的一个功能,谢谢