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方法