闽公网安备 35020302035485号
const broadCastChannel = new BroadcastChannel('audio')
function showAudio(){
//方式一:通过query,缺点会刷新已打开的页面,但并没有同源策略影响
window.open('/audio.html?name=张三&id=555','audio')
}
audio.html// 堆代码 duidaima.com
const app = document.getElementById('app')
const query = new URLSearchParams(window.location.href.split('?')[1])
app.innerText = query.get('name')
优点:每次打开,audio页面都会变为当前活动标签页2.如果新打开的浏览上下文不共享相同的源[2],则打开脚本将无法与浏览上下文的内容进行交互(读取或写入)。
function showAudio(){
if(!localStorage.getItem('hasAudio')){
window.open('/audio.html','audio')
localStorage.setItem('hasAudio',1)
}
setTimeout(()=>{
localStorage.setItem('name','李四')
},3000)
}
audio.htmlwindow.onunload = () =>{
localStorage.removeItem('hasAudio')
localStorage.removeItem('name')
}
const app = document.getElementById('app')
window.addEventListener('stroage',e=>{
const app = document.getElementById('app')
app.innerText = e.newValue
})
优点:2.同源页面需通过localStroage检控通信,控制麻烦,复杂场景使用不方便
const broadCastChannel = new BroadcastChannel('audio')
function showAudio(){
if(!localStorage.getItem('hasAudio')){
window.open('/audio.html','audio')
localStorage.setItem('hasAudio',1)
}
setTimeout(()=>{
broadCastChannel.postMessage({name:'李四'})
},3000)
}
audio.htmlwindow.onunload = () =>{
localStorage.removeItem('hasAudio')
}
const app = document.getElementById('app')
const broadCastChannel = new BroadcastChannel('audio')
broadCastChannel.addEventListener('message',e=>{
const {name} = e.data
const app = document.getElementById('app')
app.innerText = name
})
优点: