a href=#与 a href=javascript:void(0) 的区别

本文详细介绍了网页中使用不同类型的链接(如 #、javascript:void(0) 等)的效果及应用场景,探讨了如何避免页面跳转到顶部的问题,并提供了多种解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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:方法"
<think>好的,我需要回答用户关于在HTML中使用`javascript:void(0)`的问题。首先,我得回忆这个用法的常见场景和目的。`javascript:void(0)`通常用于阻止链接的默认行为,比如点击后不跳转页面。但用户可能想知道它的具体用法以及替代方法。 接下来,我应该考虑为什么开发者会使用这个语法。可能是在需要执行JavaScript代码的同时阻止页面跳转,比如在a标签的href属性中使用。但这里需要解释清楚`void(0)`的作用,它会让表达式返回undefined,从而阻止默认行为。 然后,替代方案方面,想到可以使用`event.preventDefault()`方法,或者在href中使用`#`并配合处理点击事件。但要注意使用`#`可能会导致页面滚动到顶部,所以可能需要用`#!`或者结合preventDefault来避免这个问题。 还需要提到现代前端框架中的处理方式,比如React或Vue中的事件绑定,可能不再需要这种hack方法。同时,要指出`javascript:void(0)`可能带来的问题,比如SEO不友好,或者在某些安全策略下被阻止。 另外,参考用户提供的引用中,关于AJAX的部分可能异步请求相关,如果用户使用`javascript:void(0)`来触发AJAX操作,这也是一个应用场景,但需要建议使用更规范的事件处理方式。 最后,确保回答结构清晰,分点说明用法、替代方案、注意事项,并引用相关的资料支持观点,比如引用中的AJAX和事件处理部分。</think>### HTML中使用`javascript:void(0)`的用法替代方案 #### 1. `javascript:void(0)`的作用用法 `javascript:void(0)`是一种常见的HTML事件处理方式,主要用于以下场景: - **阻止默认行为**:在`<a>`标签的`href`属性中使用时,可避免页面跳转或刷新,同时执行JavaScript代码。 ```html <a href="javascript:void(0)" onclick="handleClick()">点击执行函数</a> ``` - **返回`undefined`**:`void(0)`会计算表达式`0`并返回`undefined`,确保浏览器不会执行任何默认操作(如跳转链接)[^1]。 #### 2. 替代方案 由于`javascript:void(0)`存在可读性差和潜在的安全隐患(如被CSP策略拦截),以下是更推荐的替代方法: ##### (1) 使用`event.preventDefault()` 通过JavaScript显式阻止默认行为: ```html <a href="#" onclick="handleClick(event)">点击</a> <script> function handleClick(event) { event.preventDefault(); // 阻止跳转 // 其他逻辑 } </script> ``` ##### (2) 空链接结合CSS样式 若仅需视觉上的链接样式,无需交互逻辑: ```html <a href="#" class="disabled-link">无操作链接</a> <style> .disabled-link { cursor: default; text-decoration: none; } </style> ``` ##### (3) 使用按钮代替链接 如果目标是触发交互操作,使用`<button>`更语义化: ```html <button onclick="handleClick()">执行操作</button> ``` ##### (4) 现代框架的事件绑定 在React/Vue等框架中,直接绑定事件更规范: ```jsx // React示例 <a href="#" onClick={(e) => { e.preventDefault(); handleClick(); }}>操作</a> ``` #### 3. 注意事项 - **SEO影响**:滥用`javascript:void(0)`可能导致爬虫忽略链接内容。 - **可访问性**:若需支持屏幕阅读器,应为无跳转链接添加`role="button"`和`aria-label`。 - **URL哈希问题**:使用`href="#"`可能导致页面滚动到顶部,可通过`href="#!"`或`event.preventDefault()`规避。 #### 4. AJAX的结合 若需通过链接触发异步请求(如AJAX),推荐使用规范的事件监听而非内联脚本: ```javascript document.querySelector(&#39;#ajax-link&#39;).addEventListener(&#39;click&#39;, (e) => { e.preventDefault(); fetch(&#39;/api/data&#39;).then(...); // 执行AJAX请求 }); ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值