所謂給Javascript代碼“預留退路”意思就是當使用者將瀏覽器的Javascript功能禁用的時候,頁面中使用了Javascript的地方要能夠以變通的方式得以運行,而不能讓使用者看到出錯或是點擊某按鈕而毫無反應,這也是使用者體驗很重要的一部分。 舉個簡單的例子來說,點擊頁面中的一個連結可以彈出一個新的頁面,我們通常會使用window.open,代碼如下:
<a href="#" onclick="openWin('http://baidu.com');">百度</a><script type="text/javascript"> function openWin(url) { window.open(url, "openwin", "width=600,height=400"); }</script>
或
<a href="javascript:openWin1('http://baidu.com');" >百度</a><script type="text/javascript"> function openWin(url) { window.open(url, "openwin", "width=600,height=400"); }</script>
上面的兩種方法第一種將href的值設定為#,第二種使用偽協議javascript: ,這兩種做法都不是很好,沒有“預留退路”,當使用者將瀏覽器的Javascript禁用後,點選連結都不是我們想要的結果,正確的做法如下:
<a href="http://baidu.com/" onclick="openWin(this.getAttribute('href'));return false;" >百ù度è</a> <script type="text/javascript"> function openWin1(url) { window.open(url, "openwin", "width=600,height=400"); } </script>
改進後的方法在禁用Javascript後,也會開啟href中的連結地址,只是開啟檔案有所不同,相比上面兩種已經好多了。