阻止A标签默认行为的问题

1. 链接的onclick事件被先执行,其次是href属性下的动作(页面跳转,或 javascript 伪链接);

2. 假设链接中同时存在href与onclick,如果想让href属性下的动作不执行,onclick必须得到一个false的返值

3. 如果页面过长有滚动条,且希望通过链接的 onclick事件执行操作。应将它的 href属性设为 javascript:void(0);  ,而不要是 #,这可以防止不必要的页面跳动;

4. 如果在链接的 href属性中调用一个有返回值的函数,当前页面的内容将被此函数的返回值代替;

5. 在按住Shift键的情况下会有所区别。

6. 今天我遇到的问题,在IE6.0里以href的形式访问不到parentNode。

7. 尽量不要用javascript:协议做为A的href属性,这样不仅会导致不必要的触发window.onbeforeunload事件,在IE里面更会使gif动画图片停止播放。

 

关于:void

Java script中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。

void 操作符用法格式如下:

1. javascript:void (expression)

2. javascript:void expression

expression 是一个要计算的 Javascript 标准的表达式。表达式外侧的圆括号是选的,但是写上去是一个好习惯。

你以使用 void 操作符指定超级链接。表达式会被计算但是不会当前文档处装入任何内容。

 

关于 return false

 

通常, event.preventDefault()都会放在event handler的第一行。
这样的话, 假设在event handler中有一个JavaScript error,
那么, 放在first lineevent.preventDefault()就可以阻止submit行为, console还可以report这error.

而, return false是放在event handler的最后一行的。
并且, 他是相当于event.preventDefault()event.stopPropagation(), 如果我们想阻止bubbling的话, 就可以用return false.

更重要的是, return false只能用于DOM Level 0 Event handler,DOM Level 2 Event Handler是没用的, 

复制代码

1// get the anchors 

var anchors = document.querySelectorAll("a");
3 var a1 = anchors[0];
4 var a2 = anchors[1];
5 // DOM Level 0 Event Handler
6 a1.onclick = function(event) {  return false;};
7 // DOM Level 2 Event Handler
8 a2.addEventListener("click", function() {  return false;}, false);

复制代码

而, event.preventDefault()2者都兼容。

 

综上, 当然是推荐用event.preventDefault()啦。

 

几种格式

 

1: <a href="####"></a>

2:<a href="javascript:void(0)"></a>

3:<a href="javascript:"></a>

4:<a href="javascript:void(null)"></a>

5:<a href="#" onclick="return false"></a>


猜你喜欢

转载自blog.csdn.net/shenkeding9350/article/details/79954705