zoukankan      html  css  js  c++  java
  • 关于 javascript:void(0) 的问题.

    原文地址:楚广明的博客 http://www.cnblogs.com/chu888chu888/archive/2012/01/05/2313045.html

    最近看了好几个关于<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,所以会出现这种情况。

     
  • 相关阅读:
    USACO Milk2 区间合并
    Codeforces 490B Queue【模拟】
    HDU 3974 Assign the task 简单搜索
    HDU 5119 Happy Matt Friends(2014北京区域赛现场赛H题 裸背包DP)
    Cin、Cout 加快效率方法
    POJ 1159 回文LCS滚动数组优化
    POJ 2479 不相交最大子段和
    POJ 1458 最长公共子序列 LCS
    在阿里最深刻的,还是职场之道给我的震撼
    精细化
  • 原文地址:https://www.cnblogs.com/Chendaqian/p/3325596.html
Copyright © 2011-2022 走看看