使用過ajax的朋友經常會見到這樣的代碼:<a href="javascript:doTest2();void(0);">here</a>,這里面的void是一個操作符,該操作符指定要計算一個表達式但是不返回值。javascript:void(0);在某些情況下會有瀏覽器不兼容的bug。下面我們先來看下javascript:void(0);的基礎介紹及用法,然后再來看使用它會出現什么問題,該怎么解決。
void 操作符用法格式如下:
1. javascript:void (expression)
2. javascript:void expression
expression 是一個要計算的 Javascript 標準的表達式。表達式外側的圓括號是選的,但是寫上去是一個好習慣。 (實現版本 Navigator 3.0)
你以使用 void 操作符指定超級鏈接。表達式會被計算但是不會當前文檔處裝入任何內容。
下面的代碼創建了一個超級鏈接,當用戶以后不會發生任何事。當用戶鏈接時,void(0) 計算為 0,但 Javascript 上沒有任何效果。
<A HREF="javascript:void(0)">單此處什么也不會發生</A>
下面的代碼創建了一個超級鏈接,用戶單時會提交表單。 <A HREF="javascript:void(document.form.submit())">
單此處提交表單</A>
下面代碼則執行了subgo()函數,<a href="javascript:void(0)"onclick="subgo()">點我</a>
在這里,javascript:void(0),沒啟實質上的作用,它僅僅是一個死鏈接,執行的函數是subgo()。<a href="#" onclick="subgo()">點我</a>與<ahref="javascript:void(0)" onclick="subgo()">點我</a>區別。
<a href="javascript:void(0)"onclick="javascript:history.back();">返回 </a>
href=”#”,包含了一個位置信息.默認的錨是#top,也就是網頁的上端,當連續快速點擊此鏈接時會導致瀏覽器巨慢甚至崩潰。而javascript:void(0) 僅僅表示一個死鏈接,沒有任何信息。所以調用腳本的時候最好用void(0)<a href="javascript:void(0);" >test</a>
<a href="javascript:;" >test</a>
<a href="####" >test</a> //使用2個到4個#,見的大多是"####",也有使用"#all"等其他的
<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>
<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,又保證如果連接點擊需要處理一些代碼,隨時將0替換掉就可以。<a href="javascript:void(0)" title="關閉" onclick="delbook();">關閉</a>
或者:<a href="javascript:;" title="關閉" onclick="delbook();">關閉</a>
以上兩種方法都可能會出現跳轉。
但是你會發現:在執行完clidk事件后會執行javascript:void(0),或者javascript:;
<a href="javascript:void(0)" title="關閉" onclick="delbook();return false;">關閉</a>
或者<a href="javascript:void(0)" target="_self" title="關閉" onclick="delbook();">關閉</a>
使用return false;可以阻止javascript:void(0)去執行。<a href="javascript:delbook()" target="_self" title="關閉">關閉</a>
只要是頁面中有刷新或者跳轉動作就要用上面的解決方法。JS的幾種跳轉方式:
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)">點我</a>
window.location.href='';