美文网首页
js打开浏览器新窗口,并监听新窗口变化

js打开浏览器新窗口,并监听新窗口变化

作者: xiesen | 来源:发表于2022-12-07 14:34 被阅读0次

代码

newOpen(msg) {
    const id = window.open('https://www.jianshu.com/p/1057b36968cc','_blank','height=1000,width=600');
    //可以添加一些内容,设置标题
    id.document.body.innerHTML=`<div>${msg}`</div>`;
    id.document.title='这里设置标题';
}

窗口是打开了,这边有个需求,我需要知道新窗口的东西变化了,然后通知给原先的浏览器窗口

解决方式用LocalStorage,window.onstorage监听

//发送消息
senMsg(type, payload){
  localStorage.setItem('@@'+type, JSON.stringify({
    payload,
    temp:Date.now() //保证存的值不一样,这样监听的时候就能确保监听到
  }))
}
//监听消息
listenMsg(handler){
  const storageHandler = e=>{
    const data = JSON.parse(e.newValue)
    handler(e.key.substring(2), data.payload)  
  }
  window.addEventListener('storage',storageHandler)
  return ()=>{
    //提供销毁这个监听
    window.removeEventListener('storage',storageHandler)
  }
}

使用
原浏览器所属页面

export default {
  data() {
    return {
      unHandler: null
    }
  },
  mounted(){
    //监听localStorage是否发生变化
    this.unHandler = this.listenMsg((type, payload) =>{
      if(type === '定义的localStorage的key及keyName'){
        //进行你想要的操作
      }
    })
  },
  methods:{
    //监听消息
    listenMsg(handler){
      const storageHandler = e=>{
        const data = JSON.parse(e.newValue)
        handler(e.key.substring(2), data.payload)  
      }
      window.addEventListener('storage',storageHandler)
      return ()=>{
        //提供销毁这个监听
        window.removeEventListener('storage',storageHandler)
      }
    }
  }
}

新浏览器窗口所属页面

export default {
  data() {
    return {}
  },
  methods:{
    //发送变化触发的函数
    add(){
         let data = {name:'张三'}
         this.senMsg('keyName', data)
    },
    //发送消息
    senMsg(type, payload){
      localStorage.setItem('@@'+type, JSON.stringify({
        payload,
        temp:Date.now() //保证存的值一样,这样监听的时候就能确保监听到
      }))
    }
  },
}

相关文章

  • js打开浏览器新窗口,并监听新窗口变化

    代码 窗口是打开了,这边有个需求,我需要知道新窗口的东西变化了,然后通知给原先的浏览器窗口 解决方式用LocalS...

  • a标签

    新窗口打开 新窗口打开

  • 编程练习

    制作新按钮,“新窗口打开网站” ,点击打开新窗口。 任务 1、新窗口打开时弹出确认框,是否打开 提示:使用 if ...

  • JS打开新窗口

    一.打开新窗口的方法 1.在当前窗口打开 window.location.herf="http://www.red...

  • js打开新窗口

    js打开新窗口 Window.open()方法 完整的代码 window.open('page.html', 'n...

  • Selenium+Python句柄操作

    当我们打开浏览器,点击页面链接时,经常会遇到新的页面会在新窗口打开,而Selenium不会去自动识别新窗口,所以我...

  • 练习1-window打开网页

    编程练习制作新按钮,“新窗口打开网站” ,点击打开新窗口。 任务1、新窗口打开时弹出确认框,是否打开提示: 使用 ...

  • JS window.open()打开新窗口、监听新窗口关闭事件

    使用 window 对象的 open() 方法可以打开一个新窗口。用法如下: 参数列表如下: URL:可选字符串,...

  • BOM

    open(url,打开方式)新窗口打开空白页//open(地址默认是空白页面,打开方式默认新窗口) 打开一个新窗口...

  • 2019-04-21 href跳转

    新窗口打开 原窗口打开

网友评论

      本文标题:js打开浏览器新窗口,并监听新窗口变化

      本文链接:https://www.haomeiwen.com/subject/sbabfdtx.html