<a href="#"></a>
<a href="javascript:void(0);"></a>
//a.js
window.open("https://....com", "_blank", "height=560,width=550, top=140,left=200");
在js中采用window.open打开一个新的页面的时候,如果在a标签中采用'#'的写法,会导致当前页面出现404的情况;而如果采用第二种写法"javascript:void(0);"就不会出现404的现象
为什么会这样子,网上查阅了一下资料,对于a标签有这些不同场景的使用结果
<a href="#"></a>
<a href="#id"></a>
<a href="##"></a>
<a href="javascript:void(0);"></a>
<a href="javascript:;"></a>
<a href="#"></a>
点击这个链接后,会让页面跳到头部,window.location.href末尾增加#(若window.location.href末尾没有#),除非在js里面捕获onclick事件并阻止默认事件
<a href="#id"></a>
点击这个链接后,锚点机制会作用,页面贴齐页面里面有id为id的元素上缘
<a href="##"></a>
这种我不怎么用,但是看见网上有说##
和###
以及###
的区别的,你们可以百度一下
<a href="javascript:;"></a>``<a href="javascript:void(0);"></a>
这两种都使用了JavaScript的伪协议,这里会涉及到IE6的一个兼容问题<a href="javascript:void(0);"></a>
这种方式触发的在IE6会使得页面中的gif暂停,并且触发onbeforeunload事件,IE6认作这个页面有了重定向,并abort之后所有的请求。所以假如你在此之后替换了一个<img>
的src,IE6完全不会完成这个新的请求。
哎呀说这么多,感觉好啰嗦,总的来说:在IE11和chrome中,点击所有的<a>都会造成地址栏的修改,并触发hashchange事件。
那我们最好就是写的时候就在href属性里面写上真实的网址,并取消 <a> 的默认点击事件,return false 或event.preventDefault
网友评论