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

本文详细解释了JavaScript锚点的基本概念及其使用场景,特别强调了void(0)的作用与限制,提供了多种解决页面长链接跳转问题的方法,并探讨了其在Ajax与无刷新操作中的应用。

#"包含了一个位置信息

默认的锚点是#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)

 

JavaScript中void是一个操作符,该操作符指定要计算一个表达式但是不返回值。
void 操作符用法格式如下:
1. javascript:void (expression)
2. javascript:void expression
expression是一个要计算的 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)之前,最好先想一想,这个页面是否需要整体刷新。

转载于:https://www.cnblogs.com/ChrisMurphy/p/4988362.html

<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、付费专栏及课程。

余额充值