想实现重定向的功能,自然使用到 window.location.href=XXX。但是这种方法实现的是在当前页面下发生的跳转,本来的需求是不影响当前页面的使用,在新的选项卡下打开目标页面。
事后的事后才发现window.open简简单单地解决了这个问题: window.open(url, "_blank", params)。可当时映入脑海的第一个想法就是 <a target="_blank">,模拟标签a的点击事件,实现新页面的跳转。想到了就要去试一下,这不,问题来了。
页面的测试元素为:
<button id="btnGo">Go To New Page</button>
<a id="lnkBaidu" href="http://www.baidu.com" target="_blank">Towards Baidu!</a>
定义事件为:
$("#btnGo").click(function(){
$("#lnkBaidu").click();
});
当点击按钮时,在新的选项卡内显示百度首页。这应该是木有一点问题的,可无论我怎么点击,页面上什么效果都没有。这是肿么回事?标签a不支持直接触发click事件? 没道理呀!又给a定义了click事件:
$("#lnkBaidu").click(function(){
alert("OK?");
});
直接点击页面上的链接,先显示对话框,然后跳转,正常。但是模拟的click,弹出了对话框,click事件触发了,但是跳转失效了?? 怎么破??
jin同学的做法是添加了span标记,这样跳转倒是成功了,但是为什么呢?
。。。终于,终于找到了说明:[<a>标签内一定要有内容,并且要模拟里面的内容被点击而不是<a></a>被点击]
虽然还是有点不明所以,但是最终的解决方案还是要出来的:(仅是文本貌似不可以,需要添加个任意的标记)
<a id="lnkBaidu" href="http://www.baidu.com" target="_blank"><b>Towards Baidu!</b></a>
模拟事件为:
$("#lnkBaidu b").click(); // or $("#lnkBaidu").children().click();