新聞中心
使用過ajax的朋友經(jīng)常會見到這樣的代碼:here,這里面的void是一個操作符,該操作符指定要計算一個表達式但是不返回值。JavaScript:void(0) 在某些情況下會有瀏覽器不兼容的bug。下面我們先來看下javascript:void(0) 的基礎(chǔ)介紹及用法,然后再來看使用它會出現(xiàn)什么問題,該怎么解決。

梁河網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)公司,梁河網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為梁河上千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務(wù)好的梁河做網(wǎng)站的公司定做!
提示:在學習一下內(nèi)容之前,你可以先通過javascript:void(0) 含義一節(jié)的內(nèi)容來了解或者復習什么是javascript:void(0) !
void 操作符用法格式如下:
1. javascript:void (expression)
2. javascript:void expression
expression 是一個要計算的 Javascript 標準的表達式。表達式外側(cè)的圓括號是選的,但是寫上去是一個好習慣。 (實現(xiàn)版本 Navigator 3.0)
你可以使用 void 操作符指定超級鏈接。表達式會被計算但是不會當前文檔處裝入任何內(nèi)容。
下面的代碼創(chuàng)建了一個超級鏈接,當用戶以后不會發(fā)生任何事。當用戶鏈接時,void(0) 計算為 0,但 Javascript 上沒有任何效果。
下面的代碼創(chuàng)建了一個超級鏈接,用戶單時會提交表單。
單此處提交表單
下面代碼則執(zhí)行了subgo()函數(shù),
在這里,javascript:void(0),沒啟實質(zhì)上的作用,它僅僅是一個死鏈接,執(zhí)行的函數(shù)是subgo()。
點我與點我區(qū)別。
返回
href=”#”,包含了一個位置信息.默認的錨是#top,也就是網(wǎng)頁的上端,當連續(xù)快速點擊此鏈接時會導致瀏覽器巨慢甚至崩潰。而javascript:void(0) 僅僅表示一個死鏈接,沒有任何信息。所以調(diào)用腳本的時候最好用void(0)
href="#"與javascript:void(0)的區(qū)別href="#"方法其實也是空連接的意思,但是點擊之后會自動跳轉(zhuǎn)到頁面的最上面,因為用了這個方法就相當于點擊了一個錨記,但是這個錨記又沒寫ID,所以就默認跳轉(zhuǎn)到頁面頂部。從上面的例子也可以看出,當要執(zhí)行某些處理,但是不整體刷新頁面的情況下,可以使用void(0),但是在需要對頁面進行refresh的情況下,那就要仔細了。
其實我們可以這樣用,這句話會進行一次submit操作。那什么情況下用void(0)比較多呢,無刷新,當然是Ajax了,看一下Ajax的web頁面的話,一般都會看到有很多的void(0),所以在使用void(0)之前,最好先想一想,這個頁面是否需要整體刷新。
說白了,href="#"這種形式會整體刷新頁面,而href="javascript:void(0)" 則不會。所以如果是空連接的話,還是推薦javascript:void(0)。
href = "#"當頁面有滾動條時,點擊后會返回到頁面頂端的解決辦法目前有如下幾種解決辦法:
1、點擊鏈接后不做任何事情
test //使用2個到4個#,見的大多是"####",也有使用"#all"等其他的
2、點擊鏈接后,響應(yīng)用戶自定義的點擊事件
什么問題都解決了,包括瀏覽器不兼容問題 //或者直接使用href=""
使用javascript:void(0)會引起什么問題?鏈接(href)直接使用javascript:void(0)在IE中可能會引起一些問題,比如:造成gif動畫停止播放等,所以,最安全的辦法還是使用“####”。為防止點擊鏈接后跳轉(zhuǎn)到頁首,onclick事件return false即可。 如果僅僅是想鼠標移過,變成手形,則可以使用。 我們可以使用void操作符指定超級鏈接,如javascript:void(document.form.submit())。表達式會被計算但是不會在當前文檔處裝入任何內(nèi)容,void(0)計算為0,但在JavaScript上沒有任何效果,也就是說的效果同的效果是一樣的。
既然容易引起問題,為何新浪微博,淘寶等大站的首頁JS操作的href都是javascript:void(0);呢?
有技術(shù)朋友表示在 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/void看到了這個:
Click here to do nothing
Click here for green background
有可能是 javascript:void(0); 既保證了返回值是undefined,又保證如果連接點擊需要處理一些代碼,隨時將0替換掉就可以。
href上加js是為了防止連接跳轉(zhuǎn),以前用#但是在部分瀏覽器下回跳轉(zhuǎn)到頁面頂部。這樣就不好了,于是有人想到了添加onclick=“return false”但是這樣問題又來了,這樣做會阻止綁定的時間,比如我們用jquery。于是就有了用href=”javascript:void(0);”的寫法,這種做法開始確實是由一些寫c的人,因為編寫習慣而寫的。后來有人講void函數(shù)去掉了。就有了比較簡潔的寫法,其實在a在沒有連接的時候完全可以去掉href屬性或改用其他元素,只要加個指向時的鼠標樣式就可以了。根據(jù)個人習慣而定。
解決IE下使用javascript:void(0)方法會跳轉(zhuǎn)的方法一般情況下,在IE下的A標簽使用onclick的方法,在href屬性下都加上javascript:void(0)或者javascript:;
原代碼如下:
或者:
以上兩種方法都可能會出現(xiàn)跳轉(zhuǎn)。
但是你會發(fā)現(xiàn):在執(zhí)行完clidk事件后會執(zhí)行javascript:void(0),或者javascript:;
解決辦法:
或者
使用return false;可以阻止javascript:void(0)去執(zhí)行。
使用target="_self"可以阻止會跳轉(zhuǎn)到其他頁面,因其是空函數(shù),則不會發(fā)生頁面刷新。
當然,在使用target="_self"的情況下,你可以直接這樣寫。
關(guān)閉
只要是頁面中有刷新或者跳轉(zhuǎn)動作就要用上面的解決方法。
JS的幾種跳轉(zhuǎn)方式:
1.
window.open(”url“) 2.用自定義函數(shù)
點我3.
window.location.href=''; 標題名稱:創(chuàng)新互聯(lián)JAVA教程:javascript:void(0);用法及常見問題解析
文章轉(zhuǎn)載:http://www.5511xx.com/article/cdghpcp.html


咨詢
建站咨詢
