javascript高級程序設計學習小結3
DOM2級只是在DOM1級的基礎上通過增加新方法和新屬性來增強既有類型,Node類型的變化: localName(不帶命名空間前綴的節點名稱), namespaceURI(命名空間URI或者null), prefix(命名空間前綴)
“DOM2級視圖”模塊添加了一個名為defaultView的屬性,其中保存著一個指針,指向擁有給定文檔的窗口。
DOM2級遍歷和範圍模塊定義了兩個用於輔助完成順序遍歷DOM結構的類型: NodeIterator 和TreeWalker。以及DOM中的範圍 var range = document.createRange(), 而要通過範圍來選擇文檔中的一部分,可以使用selectNode()或者selectNodeContent()
DOM3級同樣增強了既有類型,但也引入了一些新類型
isDefaultNamespace(namespaceURI): 在指定的namespaceURI是當前節點的默認命名空間的情況下返回true
lookupNamespaceURI(prefix): 返回prefix的命名空間
lookupPrefix(namespaceURI):返回給定namespaceURI的前綴
另外引入了兩個輔助比較節點的方法: isSameNode() 和 isEqualNode()
DOM3還針對為DOM節點添加額外數據引入的新方法 setUserData(key, value, function), 獲取數據getUserData(key);
確定元素大小
function getBoundingClientRect(element) {
if (typeof arguments.callee.offset != "number") {
var scrollTop = document.documentElement.scrollTop;
var temp = document.screateElement("div");
temp.style.cssText = "position:absolute;left:0;top:0;";
document.body.appendChild(temp);
arguments.callee.offset = -temp.getBoundingClientRect().top - scrollTop;
document.body.removeChild(temp);
temp = null;
}
var rect = element.getBoundingClientRect();
var offset = arguments.callee.offset;
return {
left: rect.left + offset,
right: rect.right + offset,
top: rect.top + offset,
bottom: rect.bottom + offset
};
}
在處理文本框的值時,最好不要使用DOM方法,因為對value屬性所做的修改不一定能反映在DOM中。
文本框中選擇部分文本
function selectText(textbox, startIndex, stopIndex) {
if (textbox.setSelectionRange) {
textbox.setSelectionRange(startIndex, stopIndex);
} else if (textbox.createTextRange) {
var range = textbox.createTextRange();
range.collapse(true);
range.moveStart("character", startIndex);
range.moveEnd("character", stopIndex - startIndex);
range.select();
}
text.focus();
}
FormData為序列化表單以及創建與表單格式相同的數據(用於通過XHR傳輸)提供了便利。體現在: 不必明確在XHR對象上設置請求頭部,XHR對象能夠識別傳入的數據類型是FormData的實例,並配置適當的頭部信息。 CORS的基本思想是使用自定義的HTTP頭部讓瀏覽器與服務器進行溝通,從而決定請求或者響應是否是應該成功還是失敗。
跨域技術:(1)圖像Ping, (2) JSONP
為確保通過XHR訪問的URL安全,通行的做法就是驗證發送請求者是否有權限訪問相應的資源,有兩種方式可供選擇,1)要求以SSL連接來訪問可以通過XHR請求的資源;2)要求每一次請求都要附帶經過相應算法計算得到的驗證碼
javascript高級程序設計學習小結3