javascript:;与javascript:void(0)使用介绍


Posted in Javascript onJune 05, 2013

最近看了好几个关于<a>标签和javascript:void(0)的帖子,谨记于此,以资查阅。
注:以下代码未经全面测试,但每一种方法可能会出现的情况都基本做了说明。
在做页面时,如果想做一个链接点击后不做任何事情,或者响应点击而完成其他事情,可以设置其属性 href = "#",但是,这样会有一个问题,就是当页面有滚动条时,点击后会返回到页面顶端,用户体验不好。

目前有如下几种解决办法:

1)点击链接后不做任何事情 

<a href="javascript:void(0);" >test</a> 
<a href="javascript:;" >test</a> 
<a href="####" >test</a> //使用2个到4个#,见的大多是"####",也有使用"#all"等其他的

 

2)点击链接后,响应用户自定义的点击事件

<a href="javascript:void(0)" onclick="doSomething()">test</a> 
<a href="#" onclick="doSomething();return false;">什么问题都解决了,包括浏览器不兼容问题</a> //或者直接使用href="" 
<a href="#" onclick="alert();event.returnValue=false;">test</a>

说明:

1.javascript:void(0)这种伪协议,少写的好,如果你看过一些web标准的书就知道为什么了。(不懂,原话摘的,暂做记录)
2.链接(href)直接使用javascript:void(0)在IE中可能会引起一些问题,比如:造成gif动画停止播放等,所以,最安全的办法还是使用“####”。为防止点击链接后跳转到页首,onclick事件return false即可。
3.如果仅仅是想鼠标移过,变成手形,可以使用

<span style="cursor:pointer" onclick="foo()">Click Me!</span>  

void是javascript的操作符,意思是:只执行表达式,但没有返回值,
void 操作符用法格式如下:

javascript:void (expression)  
javascript:void expression

为了程序风格良好,建议使用第二种带上括号的
我们可以使用void操作符指定超级链接,如javascript:void(document.form.submit())。表达式会被计算但是不会在当前文档处装入任何内容,void(0)计算为0,但在JavaScript上没有任何效果,也就是说 <a href="javascript:void(0)">的效果同<a href="javascript:void(1)">的效果是一样的。
关键是只要知道void是javascipt自身的操作符,它表示的是只执行表达式,但没有返回值!
另外页面会自动调回顶端,是因为"#"默认的瞄点位置是top,所以会出现这种情况。 ​

继续解释

我想使用过ajax的都常见这样的代码:
<a href="javascript:doTest2();void(0);">here</a>
但这儿的void(0)究竟是何含义呢?

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

void 操作符用法格式如下:

1. javascript:void (expression)
2. javascript:void expression

expression 是一个要计算的 Javascript 标准的表达式。表达式外侧的圆括号是选的,但是写上去是一个好习惯。 (实现版本   Navigator 3.0   )

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

下面的代码创建了一个超级链接,当用户以后不会发生任何事。当用户链接时,void(0) 计算为 0,但 Javascript 上没有任何效果。

<A HREF="javascript:void(0)">单此处什么也不会发生</A>

下面的代码创建了一个超级链接,用户单时会提交表单。

<A HREF="javascript:void(document.form.submit())">单此处提交表单</A>

a href=#与 a href=javascript:void(0) 的区别 链接的几种办法

#包含了一个位置信息

默认的锚是#top 也就是网页的上端

而javascript:void(0)   仅仅表示一个死链接

这就是为什么有的时候页面很长浏览链接明明是#是

跳动到了页首

而javascript:void(0) 则不是如此

所以调用脚本的时候最好用void(0)

或者<input onclick>

<div onclick>等

链接的几种办法
1.window.open(''url'')

2.用自定义函数

<script>
function openWin(tag,obj)
 {
  obj.target="_blank";
  obj.href = "Web/Substation/Substation.aspx?stationno="+tag;
  obj.click();
  }
</script>

<a href="javascript:void(0)" onclick="openWin(3,this)">株洲</a>

window.location.href=""

href=”#”,包含了一个位置信息.默认的锚是#top,也就是网页的上端,当连续快速点击此链接时会导致浏览器巨慢甚至崩溃。

当然我们一般用三个 href="###",不过看了这篇文章我们以后就可以使用javascript:;(一个冒号一个分号)

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

javascript:;好些,javascript:void(0);据说某些情况下有浏览器兼容bug。(此点bug我也不知道什么时候能出现,知道的童鞋请指教)。

可以写成javascript:;,qq空间很多都是写成javascript:;
我感觉这两者之间没有什么差别,都是执行一个空事件。
javascript:;甚至少了7个字符,呵呵。

新浪微博写的是javascript:void(0);

我以前一直写的是javascript:void(0);但是现在写的都是javascript:;

a href="#"> 点击链接后,页面会向上滚到页首,# 默认锚点为 #TOP
<a href="javascript:void(0)" onClick="window.open()"> 点击链接后,页面不动,只打开链接
<a href="#" onclick="javascript:return false;"> 作用同上,不同浏览器会有差异。

点击链接后,不想使页面滚到页首,就用href="javascript:void(0)",不要用href="#",return false也有类似作用

详解href="#"与href="javascript:void(0)"的区别

"#"包含了一个位置信息
默认的锚点是#top 也就是网页的上端
而javascript:void(0) 仅仅表示一个死链接
这就是为什么有的时候页面很长浏览链接明明是#可是跳动到了页首
而javascript:void(0) 则不是如此
所以调用脚本的时候最好用void(0)
或者<input onclick>
<div onclick>等
打开新窗口链接的几种办法
1.window.open('url')
2.用自定义函数

        <script>

        function openWin(tag,obj)

        {

            obj.target="_blank";

            obj.href = "Web/Substation/Substation.aspx?stationno="+tag;

            obj.click();

        }

        </script>

<a href="javascript:void(0)" onclick="openWin(3,this)">LINK_TEST</a>

window.location.href=""

如果是个# ,就会出现跳到顶部的情况,个人收藏的几种解决方法:
1:<a href="####"></a>
2:<a href="javascript:void(0)"></a>
3:<a href="javascript:void(null)"></a>
4:<a href="#" onclick="return false"></a>
5:<span style="cursor:hand"></span>(好像在FF中不能显示)

慎用JavaScript:void(0)
今天调试CGI的时候,明明CGI程序已经执行,并且最后结果也是正确的,但是页面就是不刷新。在FireFox2.0下测试,结果却是正常的,IE6却偏偏不刷新!仔细调查了一下,发现cgi页面链接的是 <a href="javaScript:void(0)" OnClick="XXX_Func();" ….> only a sample </a>,问题就出在这个void(0)上!让我们先来看看JavaScript中void(0)的含义:
JavaScript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。
void 操作符用法格式如下:
1. javascript:void (expression_r_r)
2. javascript:void expression_r_r
expression_r_r是一个要计算的 JavaScript 标准的表达式。表达式外侧的圆括号是可选的,但是写上去是一个好习惯。我们可以使用 void 操作符指定超级链接。表达式会被计算但是不会在当前文档处装入任何内容。面的代码创建了一个超级链接,当用户点击以后不会发生任何事。当用户点击链接时,void(0) 计算为 0,但在 JavaScript 上没有任何效果。
<a href="javascript:void(0)">单击此处什么也不会发生</a>
也就是说,要执行某些处理,但是不整体刷新页面的情况下,可以使用void(0),但是在需要对页面进行refresh的情况下,那就要仔细了。
其实我们可以这样用<a href="javascript:void(document.form.submit())">,这句话会进行一次submit操作。那什么情况下用void(0)比较多呢,无刷新,当然是Ajax了,看一下Ajax的web页面的话,一般都会看到有很多的void(0),:) ,所以在使用void(0)之前,最好先想一想,这个页面是否需要整体刷新。
 

 使用javascript的时候,通常我们会通过类似:
<a href="#" onclick="javascript:方法">提交</a>
的方式,通过一个伪链接来调用javascript方法.这种方法有一个问题是:
虽然点击该链接的时候不会跳转页面.但是滚动条会往上滚,解决的办法是返回一个false.
如下所示:
<a href="#" onclick="javascript:方法;return false;">提交</a>

还可以用 ###

a href="javascript:void(0)" onclick="javascript:方法;return false;"提交
javascript:void(0)就不会向上跳了:)

还有一个方法是 #this
a href="#this" onclick="javascript:方法"

Javascript 相关文章推荐
JavaScript作用域链示例分享
May 27 Javascript
Node.js实现Excel转JSON
Apr 24 Javascript
理解Javascript的call、apply
Dec 16 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
Mar 06 Javascript
js一维数组、多维数组和对象的混合使用方法
Apr 03 Javascript
基于JavaScript实现下拉列表左右移动代码
Feb 07 Javascript
详解JS中的attribute属性
Apr 25 Javascript
Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码
Aug 22 Javascript
在页面中引入js的两种方法(推荐)
Aug 29 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
Jan 24 Javascript
如何利用ES6进行Promise封装总结
Feb 11 Javascript
AJAX检测用户名是否存在的方法
Mar 24 Javascript
jquery插件开发注意事项小结
Jun 04 #Javascript
jquery的ajaxSubmit()异步上传图片并保存表单数据演示代码
Jun 04 #Javascript
js调用AJAX时Get和post的乱码解决方法
Jun 04 #Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
Jun 04 #Javascript
左侧是表头的JS表格控件(自写,网上没有的)
Jun 04 #Javascript
js判断undefined变量类型使用typeof
Jun 03 #Javascript
如何使用jQUery获取选中radio对应的值(一句代码)
Jun 03 #Javascript
You might like
Zend studio for eclipse中使php可以调用mysql相关函数的设置方法
2008/10/13 PHP
PHP register_shutdown_function函数的深入解析
2013/06/03 PHP
PHP查询快递信息的方法
2015/03/07 PHP
PHP7新增运算符用法实例分析
2016/09/26 PHP
jquery判断字符输入个数(数字英文长度记为1,中文记为2,超过长度自动截取)
2010/10/15 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
浅析Bootstrap表格的使用
2016/06/23 Javascript
js cookie实现记住密码功能
2017/01/17 Javascript
input获取焦点时底部菜单被顶上来问题的解决办法
2017/01/24 Javascript
JavaScript实现的商品抢购倒计时功能示例
2017/04/17 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
webpack4 + react 搭建多页面应用示例
2018/08/03 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
2018/12/10 jQuery
Jquery使用each函数实现遍历及数组处理
2020/07/14 jQuery
[01:30]DOTA2上海特锦赛现场采访 Loda倾情献唱
2016/03/25 DOTA
讲解Python中if语句的嵌套用法
2015/05/14 Python
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
Python简单实现两个任意字符串乘积的方法示例
2018/04/12 Python
解决Python网页爬虫之中文乱码问题
2018/05/11 Python
python3爬取数据至mysql的方法
2018/06/26 Python
简单了解Python生成器是什么
2019/07/02 Python
Python实现将元组中的元素作为参数传入函数的操作
2020/06/05 Python
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
巴西最大的家电和百货零售商:Casas Bahia
2016/11/22 全球购物
升职自荐信范文
2013/10/05 职场文书
技术人员面试提纲
2013/11/28 职场文书
机械设计职业生涯规划书
2013/12/27 职场文书
小溪流的歌教学反思
2014/02/13 职场文书
雷锋式好少年事迹材料
2014/08/17 职场文书
婚前协议书范本
2014/10/27 职场文书
婚宴邀请函
2015/01/30 职场文书
中秋联欢会主持词
2015/07/04 职场文书
纯html+css实现奥运五环的示例代码
2021/08/02 HTML / CSS
SQL SERVER存储过程用法详解
2022/02/24 SQL Server
HttpClient实现文件上传功能
2022/08/14 Java/Android