1. 程式人生 > >HTML 中各瀏覽器對A標籤中javascript的支援研究

HTML 中各瀏覽器對A標籤中javascript的支援研究

最近做一個專案要求javascript對多瀏覽器支援,但是頁面中有較多的使用A標籤,於是就出現了下面的問題

如寫出下面的程式碼

<a href="javascript:;" onclick="testFunction()">測試</a>

對於上面的程式碼,各個瀏覽器的支援分別為:

IE6/IE7:  會執行onclick中的javascript方法,但同時也會執行href中的javascript方法,於是,如果你在onclick方法中提交了表單,那麼就會出現表單提交了,但是頁面沒有跳轉的問題!

IE8:  和 前兩個版本IE一樣,href中的javascript方法會執行,同時onclick方法也會執行,但是不同點是如果onclick中提交了表單,頁面可以跳轉

firefox和webkit瀏覽器:這兩個瀏覽對於上面的A標籤執行的方式和IE8是一樣!

針對上面的問題,其實是由於上面的A標籤中使用的javascript語法不正確所致

對於上面的A標籤,IE6和IE7中會先執行href然後再執行onclick,所以按上面的語法就會變成先執行了javascript: ;這個方面,IE6會認為是頁面重新整理了!所以當onclick方法中有跳轉時,方法執行完後不會跳轉,因為前面的javascript: ;相當於已經讓瀏覽器跳轉了一次頁面,所以無法執行跳轉!

針對上面的解決方法可以用下面的方式

<a href="javascript:void(0);" onclick="javascript: testFunction(); return false;">test</a>

這種是目前來說最標準的寫法

不過這樣寫程式碼又確實有點長了,所以也可以寫成下面的比較懶的寫法

<a href="#" onclick="javascript: testFunction(); return false;">test</a>

最關鍵是要在onclick中reutnr false;告訴瀏覽器不要去執行A標籤中的href方法