IE (6-11)版本,在使用iframe的框架时,通过a标签javascript:; 和js跳转parent.location的时候 出现在新页面打开的情况

问题描述:

使用iframe的情况下,在子框架中,使用如下形式的跳转:

<a href="javascript:;"  onclick="parent.location.href='login.php';"> 退出</a>

在IE浏览器下,点击后,会在退出的情况下,再打开一个页面,URL显示为 javascript:;  的情况出现,也就是说 a标签的 javascript:; 并未生效!

这是一个很奇怪的现象,在谷歌等现代浏览器中并不存在该问题。 最后猜测可能是由于 a标签的href属性 在IE下的解析是先将href的值传递给父框架,然后在父框架中对href的值进行的一个跳转,而此时的href的值已经是一个字符串,并不具备执行js的功能。因此直接在新窗口中打开了URL 为 javascipt:;的页面,因此出现该错误。 那要解决这个问题就要在传递之前阻止a标签的默认事件,解决方法如下:

<a href="#" onclick="parent.location.href='login.php';return false;">退出</a>

//或者使用jquery的,event.preventDefault()方法也可以达到同样的效果。

记录以作备用

上一篇:effective C++: 5实现


下一篇:关于weblogic部署Java项目的包冲突问题