溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

javascript中void(0)用法及常見(jiàn)問(wèn)題有哪些

發(fā)布時(shí)間:2022-02-19 15:55:57 來(lái)源:億速云 閱讀:389 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容介紹了“javascript中void(0)用法及常見(jiàn)問(wèn)題有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

void 操作符用法格式如下: \1. javascript:void (expression) \2. javascript:void expression

expression 是一個(gè)要計(jì)算的 Javascript 標(biāo)準(zhǔn)的表達(dá)式。表達(dá)式外側(cè)的圓括號(hào)是選的,但是寫(xiě)上去是一個(gè)好習(xí)慣。 (實(shí)現(xiàn)版本 Navigator 3.0)

你可以使用 void 操作符指定超級(jí)鏈接。表達(dá)式會(huì)被計(jì)算但是不會(huì)當(dāng)前文檔處裝入任何內(nèi)容。

下面的代碼創(chuàng)建了一個(gè)超級(jí)鏈接,當(dāng)用戶以后不會(huì)發(fā)生任何事。當(dāng)用戶鏈接時(shí),void(0) 計(jì)算為 0,但 Javascript 上沒(méi)有任何效果。

<A HREF="javascript:void(0)">單此處什么也不會(huì)發(fā)生</A>

下面的代碼創(chuàng)建了一個(gè)超級(jí)鏈接,用戶單時(shí)會(huì)提交表單。

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

下面代碼則執(zhí)行了 subgo()函數(shù),

<a href="javascript:void(0)"onclick="subgo()">點(diǎn)我</a>

在這里,javascript:void(0),沒(méi)啟實(shí)質(zhì)上的作用,它僅僅是一個(gè)死鏈接,執(zhí)行的函數(shù)是 subgo()。

<a href="#" onclick="subgo()">點(diǎn)我</a>
與
<ahref="javascript:void(0)" onclick="subgo()">點(diǎn)我</a>區(qū)別。
<a href="javascript:void(0)"onclick="javascript:history.back();">
返回</a>

href=”#”,包含了一個(gè)位置信息.默認(rèn)的錨是 #top,也就是網(wǎng)頁(yè)的上端,當(dāng)連續(xù)快速點(diǎn)擊此鏈接時(shí)會(huì)導(dǎo)致瀏覽器巨慢甚至崩潰。而javascript:void(0) 僅僅表示一個(gè)死鏈接,沒(méi)有任何信息。所以調(diào)用腳本的時(shí)候最好用 void(0)

href="#" 與 javascript:void(0)的區(qū)別

href="#"方法其實(shí)也是空連接的意思,但是點(diǎn)擊之后會(huì)自動(dòng)跳轉(zhuǎn)到頁(yè)面的最上面,因?yàn)橛昧诉@個(gè)方法就相當(dāng)于點(diǎn)擊了一個(gè)錨記,但是這個(gè)錨記又沒(méi)寫(xiě)ID,所以就默認(rèn)跳轉(zhuǎn)到頁(yè)面頂部。從上面的例子也可以看出,當(dāng)要執(zhí)行某些處理,但是不整體刷新頁(yè)面的情況下,可以使用 void(0),但是在需要對(duì)頁(yè)面進(jìn)行 refresh 的情況下,那就要仔細(xì)了。

其實(shí)我們可以這樣用,這句話會(huì)進(jìn)行一次 submit 操作。那什么情況下用 void(0) 比較多呢,無(wú)刷新,當(dāng)然是 Ajax了,看一下 Ajax 的 web 頁(yè)面的話,一般都會(huì)看到有很多的 void(0),所以在使用 void(0) 之前,最好先想一想,這個(gè)頁(yè)面是否需要整體刷新。

說(shuō)白了,href="#"這種形式會(huì)整體刷新頁(yè)面,而 href="javascript:void(0)" 則不會(huì)。所以如果是空連接的話,還是推薦javascript:void(0)。

href = "#"當(dāng)頁(yè)面有滾動(dòng)條時(shí),點(diǎn)擊后會(huì)返回到頁(yè)面頂端的解決辦法

目前有如下幾種解決辦法:

1、點(diǎn)擊鏈接后不做任何事情

<a href="javascript:void(0);" >test</a> 
<a href="javascript:;" >test</a> 
<a href="####" >test</a> //使用2個(gè)到4個(gè)#,見(jiàn)的大多是"####",也有使用"#all"等其他的

2、點(diǎn)擊鏈接后,響應(yīng)用戶自定義的點(diǎn)擊事件

<a href="javascript:void(0)" onclick="doSomething()">test</a> 
<a href="#" onclick="doSomething();return false;">
什么問(wèn)題都解決了,包括瀏覽器不兼容問(wèn)題</a> //或者直接使用href="" 
<a href="#" onclick="alert();event.returnValue=false;">test</a>

使用 javascript:void(0)會(huì)引起什么問(wèn)題?

鏈接(href)直接使用 javascript:void(0)在 IE 中可能會(huì)引起一些問(wèn)題,比如:造成 gif 動(dòng)畫(huà)停止播放等,所以,最安全的辦法還是使用“####”。為防止點(diǎn)擊鏈接后跳轉(zhuǎn)到頁(yè)首,onclick 事件 return false 即可。 如果僅僅是想鼠標(biāo)移過(guò),變成手形,則可以使用。

我們可以使用 void 操作符指定超級(jí)鏈接,如 javascript:void(document.form.submit())。表達(dá)式會(huì)被計(jì)算但是不會(huì)在當(dāng)前文檔處裝入任何內(nèi)容,void(0)計(jì)算為 0,但在 JavaScript 上沒(méi)有任何效果,也就是說(shuō)的效果同的效果是一樣的。

既然容易引起問(wèn)題,為何新浪微博,淘寶等大站的首頁(yè) JS 操作的 href 都是 javascript:void(0);呢?

javascript中void(0)用法及常見(jiàn)問(wèn)題有哪些

javascript中void(0)用法及常見(jiàn)問(wèn)題有哪些

有技術(shù)朋友表示看到了這個(gè):

<a href=”void(0);” rel=”nofollow”>
Click here to do nothing
</a>
<a href=”void(document.body.style.backgroundColor=’green’);” rel=”nofollow”>
Click here for green background</a>

有可能是 javascript:void(0); 既保證了返回值是 undefined,又保證如果連接點(diǎn)擊需要處理一些代碼,隨時(shí)將 0 替換掉就可以。

href上 加 js 是為了防止連接跳轉(zhuǎn),以前用 # 但是在部分瀏覽器下回跳轉(zhuǎn)到頁(yè)面頂部。這樣就不好了,于是有人想到了添加οnclick=“return false”但是這樣問(wèn)題又來(lái)了,這樣做會(huì)阻止綁定的時(shí)間,比如我們用 jquery。于是就有了用 href=”javascript:void(0);”的寫(xiě)法,這種做法開(kāi)始確實(shí)是由一些寫(xiě) c 的人,因?yàn)榫帉?xiě)習(xí)慣而寫(xiě)的。后來(lái)有人講 void 函數(shù)去掉了。就有了比較簡(jiǎn)潔的寫(xiě)法,其實(shí)在 a 在沒(méi)有連接的時(shí)候完全可以去掉href屬性或改用其他元素,只要加個(gè)指向時(shí)的鼠標(biāo)樣式就可以了。根據(jù)個(gè)人習(xí)慣而定。

解決 IE 下使用 javascript:void(0)方法會(huì)跳轉(zhuǎn)的方法

一般情況下,在 IE 下的 A 標(biāo)簽使用 onclick 的方法,在 href 屬性下都加上 javascript:void(0) 或者 javascript:;

原代碼如下:

<a href="javascript:void(0)" title="關(guān)閉" onclick="delbook();">關(guān)閉</a>

或者:

<a href="javascript:;" title="關(guān)閉" onclick="delbook();">關(guān)閉</a>

以上兩種方法都可能會(huì)出現(xiàn)跳轉(zhuǎn)。

但是你會(huì)發(fā)現(xiàn):在執(zhí)行完 clidk 事件后會(huì)執(zhí)行 javascript:void(0),或者 javascript:;

解決辦法:

<a href="javascript:void(0)" title="關(guān)閉" onclick="delbook();return false;">關(guān)閉</a>

或者

<a href="javascript:void(0)" target="_self" title="關(guān)閉" onclick="delbook();">關(guān)閉</a>

使用 return false;可以阻止 javascript:void(0)去執(zhí)行。

使用 target="_self"可以阻止會(huì)跳轉(zhuǎn)到其他頁(yè)面,因其是空函數(shù),則不會(huì)發(fā)生頁(yè)面刷新。

當(dāng)然,在使用 target="_self"的情況下,你可以直接這樣寫(xiě)。

<a href="javascript:delbook()" target="_self" title="關(guān)閉">關(guān)閉</a>

只要是頁(yè)面中有刷新或者跳轉(zhuǎn)動(dòng)作就要用上面的解決方法。

JS 的幾種跳轉(zhuǎn)方式: 

1.

window.open(”url“)

2.用自定義函數(shù)

<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)">點(diǎn)我</a>
window.location.href='';

“javascript中void(0)用法及常見(jiàn)問(wèn)題有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI