难度级别:初级及以上 提问概率:55%
a标签的默认语义化功能就是超链接,HTML给它的定位就是与外部页面进行交流,不过也可以通过锚点功能,定位到本页面的固定id区域去。但在开发场景中,又避免不了禁用a标签的需求,那么都有哪些方式可以禁用a标签跳转呢?
首先想到的就是通过CSS属性,设置pointer-events: none;,这样就使得a标签不具备响应鼠标事件的功能,等用到跳转功能的时候再将其设置为auto属性值即可;比较常用的一种方式,是给href属性设置javascript:void(0);属性值,这样也可以使a标签失去跳转能力;还有一种方式,就是阻止点击默认行为,这个时候href属性设置为空,添加οnclick="return false;"的属性设置即可。
一般提问这道题的同时,面试官还会紧接着问你javascript:void(0);是什么意思。我们知道void是Javascript中的关键字,它表示要计算一个表达式,但并不需要有返回值。意思就是void后面的小括号内,正常情况下是可以有Javascript代码的,但这里使用0做为表达式,也就是当用户点击a标签的时候,void(0)的计算值就是0,不会发生任何事情,从而阻止了a标签的跳转。
刷题思考
这道题很多求职者非常容易放松警惕,很自然而然的就可以回答出javascript:void(0)这个答案,因为这的确是最常用的一种方式。但前端开发发展这么多年,几乎每个问题都有多种解决方案,尤其是面试的时候,每道题都要尽量的结合多个角度去给出多个答案,这应该是我们自己对于求职这项工作最起码的要求吧。
还有说出javascript:void(0)的含义,这虽然不是什么难点,但在回答这道题的时候,即便面试官不问,自己也应该主动说出来,这种主动性绝对会让面试官眼前一亮。
类似考点
很多标签都有浏览器默认行为,或者是自身带有键盘事件行为,有时候我们需要阻止这种默认行为,又有时候我们需要给一些普通标签添加这种行为,面试官可能还会这么问,例如请你说一下如何给div标签添加键盘事件;例如如何取消input输入框默认的选中黑框;例如如何禁止input输入框显示用户曾经的历史记录;例如如何阻止form表单的默认跳转行为等。