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

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

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

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

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

    消极阻止新页面开启的方法,就是在被导航页面中加入如下脚本(要放在<body>之后):
<script language="javascript">
document.body.onload 
= dummy;

function dummy()
{
    
if ( window.history.length == 0 )
    
{
        window.close();
    }

}

</script>

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

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

posted on 2005-06-04 00:23 birdshome 阅读(2097) 评论(4) 编辑 收藏

评论

#1楼  回复 引用   

我都是用Maxthon用鼠标点住链接拖动一下,来新开页面的...
2005-06-27 04:39 | robaggio

#2楼[楼主]  回复 引用 查看   

这玩意儿也就是有限的限制一下,应该没有绝对的方法,除了用插件控制页面之间互斥。不过好像太夸张了@_@。
2005-06-27 09:41 | birdshome      

#3楼  回复 引用   

我现在也遇到这问题,用了微软树控件,现在问题是TREENODE 中加入不了onclick="window.location = this.href; return false;" 事件 ,有其他方法吗?
2006-03-06 13:50 | hooh[未注册用户]

#4楼[楼主]  回复 引用 查看   

@hooh
TreeNode里都能加入什么呢?
2006-03-06 14:05 | birdshome      

导航

公告

  原创技术文章和心得,转载必须注明来源"博客园"!
  贴子以"现状"提供,且没有任何担保,同时也没有授予任何权利。
昵称:birdshome
园龄:7年10个月
荣誉:推荐博客
粉丝:73
关注:3

搜索

 

常用链接

我的标签

随笔分类(337)

文章分类(147)

相册

Ex-Colleagues

常用链接

兄弟情深

积分与排名

  • 积分 - 3145044
  • 排名 - 6

最新评论

阅读排行榜

推荐排行榜