阻止超链接跳转
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 line的event.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
2 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>