想想還是把標題改成複習好點,因為書中的知識點挺多而且細,不好概括,凡是覺得重要的我都想提一提把code重新打一遍。繼續(二)的內容,接下來該是從DOM刪除一個節點:NodeParent.removeChild(NodeToRemove);
書中removeChild為基礎封裝了兩個函數:
//從DOM中移除一個節點
function remove(elem) {
if(elem) elem.parentNode.removeChild( elem);
}
//清空一個元素的所有子節點
function empty(elem) {
while(elem.firstChild) {
remove(elem.firstChild);
}
}
DOM部分算是複習結束,接下來是Event部分。同樣是javascript開發中一個很核心的東西。說到事件這裡有個重要的概念,javascript的事件分兩個階段:capturing and bubbling phase,稱為事件的捕獲和冒泡階段。
來個能說明問題的例子:
<body>
<div id="content">
<ul class="links">
<li>
<a href="/">Home</a> //我們點擊了這個連結
</li>
<li><a href="/about/">About</a></li>
</ul>
</div>
</body>
首先是capturing phase:假設我們單擊了一個連結,事件的激發順序:document的click處理事件-->body的click處理事件-->
div的click處理事件 以此類推最後到達那個我們點擊的a,然後進入bubbling phase,順序和capturing phase相反。
有時我們要取消事件冒泡:
function stopBubble(e) {
//如果預設傳入了event對象,那麼這是非IE瀏覽器
if(e && e.stopPropagation )
//因此支援W3C標準的stopPropagation()方法
e.stopPropagation();
else
//否則我們要用IE取消事件冒泡的方式
window.event.cancelBubble = true;
}
對於瀏覽器的預設行為我們在開發過程中也要注意,比如一個使用者表單,當使用者輸入內容,並按下提交按鈕,如果表單內容所填有誤的話,就應該給使用者指出錯誤,不給予提交。阻止瀏覽器的預設行為:
function stopDefault(e) {
//阻止預設的瀏覽器行為(W3C)
if( e && e.preventDefault) e.preventDefault();
else window.event.returnValue = false; //IE中採用的方法
return false;
}
接著作者講述了些開發網頁的原則,比如在去掉css和javascript的前提下,看看自己的網頁是否還能良好的導航與瀏覽,你的html標籤是否具有良好的語義,css和javascript有沒有跟HTML DOM進行分離等等..我覺得在CSS方面有本書很不錯,《超越CSS:web設計精髓》。