阻止 a 标签跳转
方法原理解析
- 锚点链接
- 注意使用
href="#top"或者href="#"链接会返回到页面顶部。
<a href="#">test</a> - 注意使用
- 伪协议
javascript:- 当用户点击一个以
javascript:开头的URI时,它会执行URI中的代码,然后用返回的值替换页面内容,除非返回的值是undefined - 注意 这个方法 chorme 游览器生效,但控制台会有报错提示
<a href="javascript:void(0);">test</a> <a href="javascript:;">test</a> - 当用户点击一个以
- 绑定事件 推荐使用
onclickreturn falseevent.preventDefault()阻止默认的点击事件执行
// <a id="test" href="https://baidu.com" >test</a> a.onclick = function(e){ // return false e.preventDefault() } - css 属性
pointer-events: none;- 元素永远不会成为鼠标事件的 target
<a href="https://www.baidu.com" style="pointer-events:none;">test</a>- 但是,当其后代元素的
pointer-events属性指定其他值时,依然会发生跳转 (鼠标事件可以指向后代元素,在这种情况下,鼠标事件将在捕获或冒泡阶段触发父元素的事件侦听器)
<a href="https://www.baidu.com" style="pointer-events:none;"> test <p style="pointer-events:auto;">后代元素<p/> </a>
什么是伪协议
- 伪协议不同于因特网上所真实存在的协议,如
http://https://ftp:// - 而是为关联应用程序而使用的.如:
tencent://data:javascript: - 我们可以在浏览地址栏里输入
javascript:alert('JS!');,点转到后会发现,实际上是把javascript:后面的代码当JavaScript来执行,并将结果值返回给当前页面。