window.open 不会重复开启窗口

很多的网站会使用window.open其开启一个窗口,但是用户有时候会重复开启相同的窗口,如果开启的窗口多了,用户将不胜其烦。为了解决这个问题,我决定重写window.open方法。

       window.open 方法是否可以重写

这个问题很容易验证,随便打开一个浏览器的控制台,然后给window.open赋值一个function,我们将会看到window.open变成了我们赋值的方法。但是这种赋值将不能让我们使用其之前的方法,那么我认为可以在匿名函数中将原来的window.open 赋值给一个变量。然后在重写的方法中做出调整,并调用变量也就是调用原来的window.open方法去打开窗口。

      我只是提供了一个解决的思路,具体的代码还没有写出来,我只是定义了其他的方法类实现这个功能,当然有了上述的思路,重写window.open还是可以得,但是由于重写后的window.open将不在是本地方法,需要每个页面必须引入相关的js。

      那实现的逻辑是什么呢!

      实现同一个页面不打开窗口的方式其实有两种,1.用户打开窗口后,让用户不可以再打开相同的窗口。2让用户可以打开新的窗口,但是需要关闭原来的相同的窗口。权衡之下我决定使用第二种方式来实现这个功能,因为用户可能存在这样一种情况,就是用户不刷新打开的窗口,而是想打开新的窗口来看效果。而这个时候如果是使用第一种情况,用户看到的结果将只能是旧的数据。

      具体实现:

      首先用户打开窗口的时候我做一个hashcode处理,得到url的唯一标识,然后使用随机数唯一标识这次动作,然后在url的后面拼接两个参数一个是原来的url的hashcode,另一个是随机数。通过这两个参数就可以唯一标识新打开的窗口。我将这两个参数分别作为key和value设置到coockie中去。然后在新窗口中每隔200ms去判断value的值是否与本页面的随机数相同。如果不相同,则证明打开了一个新的窗口。那么本窗口将关闭。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值