Js編程原則和良好習慣

一、預留退路:在禁止Js或者Js不被支持的狀況下,網頁還能正常工做。也就是說,雖然某些功能沒法使用,但最基本的操做仍能順利完成。javascript

案例:點擊連接,打開一個新窗口。
就如本站的登陸(彈出一個模擬窗口),與其讓用戶在點擊連接的時候被帶離當前頁面,不如讓用戶仍停留在當前頁面,並用一個彈出窗口來顯示相關信息,這無疑是一種更好的解決方法。
一些錯誤的寫法:
僞協議:<a href="javascript:showWindow('login', this.href);" >登陸</a>
內嵌事件處理函數:<a href="#" onclick="showWindow('login', this.href); return false;">登陸</a>php

javascript:僞協議是人們對非標準化通訊機制的統稱,僞協議讓咱們能夠經過一個連接來調用Js函數。
這種作法的很差之處在於,若是僞協議不被支持或Js被禁止了,那麼這段代碼就不能執行,也就沒意義了。html

好的寫法:
<a href="member.php?mod=logging&action=login" onclick="showWindow('login', this.href); return false;">登陸</a>java

更好的作法是將Js代碼與HTML文檔分離開來。
把href屬性設置爲真實存在的URL地址後,即便Js被禁止或遇到爬蟲,這個連接還是可用的。瀏覽器

二、結構與行爲分離:把網頁的結構和內容與Js腳本的動做行爲分開。
所謂的"按部就班"就是用一些額外的信息層去包裹原始數據的作法。對於一個網站來講,內容就是一切,可是也不能直接將原始內容發佈到網絡上,而不加任何描述和修飾。
給內容加上正確的HTML標記是很重要的,也就是語義化,因此說,標記良好的內容就是一切。網絡

仍是上個案例:
html代碼:
<a href="member.php?mod=logging&action=login" class="login">登陸</a>函數

Js代碼:
window.onload=function(){
var links=document.getElementsByTagName('a');
for(var i=0,len=links.length;i<len;i++){
if('login'===links[i].getAttribute('class')){
links[i].onclick=function(){
showWindow('login', this.href);
return false;http://www.huiyi8.com/moban/ html模板網站

三、向後兼容性:確保老版本的瀏覽器不會由於你的Js腳本而崩潰。
一些瀏覽器可能沒法理解DOM提供的方法和屬性,那麼就須要在腳本里對瀏覽器的Js支持程度進行檢測。
這有點兒像遊樂園裏的警告牌:"你必須達到這一身高才能參與這項遊樂活動。"換句話說,須要在Js腳本里表達出這樣的含義:"你必須理解這個方法或屬性,才能執行這些語句"。
一個有效的檢測方法就是對象檢測(object detection):把某個方法打包在一個if語句裏,而後根據條件表達式的結果是true(存在)仍是false(不存在),決定應該採起怎樣的行動。
window.onload=function(){ui

if(!document.getElementsByTagName) return false;this

var links=document.getElementsByTagName('a'); for(var i=0,len=links.length;i<len;i++){ if('login'===links[i].getAttribute('class')){ links[i].onclick=function(){ showWindow('login', this.href); return false;

相關文章
相關標籤/搜索