阻止shift+click页面超链接打开新窗口

本文介绍了一种阻止用户使用Shift+Click在新窗口打开超链接的方法,包括积极阻止和消极阻止两种策略。积极阻止通过取消<a>元素的默认行为并手动触发页面跳转来实现;消极阻止则是在目标页面加载时判断是否为新窗口并关闭之。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 似乎是挺无聊的一个功能,阻止用户使用Shift+Click超级链接打开新的页面。不过既然有这样的bt需求,我就简单设计了一个解决方案。虽然是能解决大部分问题,不过遇到复制链接再在别的browser中去打开就没有好的阻止办法了。

    解决方法分为两步,一是积极阻止,一是消极阻止。积极阻止就是在<a>上面下功夫,也就是禁止掉<a>元素的默认事件,换以手动的页面跳转。代码即示例如下:

None.gif1、 < href ="http://www.google.com/"  onclick ="window.location = this.href; return false;" >
None.gif    navigate to google </ a >
None.gif2、 < href ="http://www.google.com/"  target ="_blank"  onclick ="window.location = this.href; return false;" >
None.gif    navigate to googl (_black) </ a >
    1、 navigate to google 2、 navigate to google (_black)

    积极阻止的关键是用"return false" cancel了<a>元素的默认navigation事件。

    消极阻止新页面开启的方法,就是在被导航页面中加入如下脚本(要放在<body>之后):
ExpandedBlockStart.gif < script  language ="javascript" >
InBlock.gifdocument.body.onload  =  dummy;
InBlock.gif
InBlock.gif function  dummy()
ExpandedSubBlockStart.gif {
InBlock.gif     if  ( window.history.length  ==   0  )
ExpandedSubBlockStart.gif     {
InBlock.gif        window.close();
ExpandedSubBlockEnd.gif    }
ExpandedBlockEnd.gif}
None.gif </ script >

    因为这个方法需要先开启了新窗口,再做判断,所以叫消极阻止。同时还有一个问题,如果用户复制了链接到新的browser中访问,如果该browser是新开起的进程,由于window.history.length仍然是0,也可以起到一定的阻止作用。不过这个方法始终很消极,并且不能保证一定成功。

    但是毕竟这种功能都只是为了限制90%以上的普通用户,而不是针对熟悉Web开发的人emembarrassed.gif,所以这样看来这种防止力度似乎还是可用了。


本文转自博客园鸟食轩的博客,原文链接:http://www.cnblogs.com/birdshome/,如需转载请自行联系原博主。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值