最近對 Range 和 Selection 比較感興趣。
基本非 IE 的瀏覽器都支持 DOM Level2 中的 Range,而 IE 中僅有自己的簡單處理方法(Text Rang)。
擴(kuò)展閱讀:
《TextRange Prototype》
《Document Object Model Range》
《Javascript標(biāo)準(zhǔn)DOM Range操作(1)》(節(jié)選自《JavaScript 高級(jí)程序設(shè)計(jì)》)
《Javascript標(biāo)準(zhǔn)DOM Range操作(2)》(節(jié)選自《JavaScript 高級(jí)程序設(shè)計(jì)》)
《Javascript標(biāo)準(zhǔn)DOM Range操作(3)》(節(jié)選自《JavaScript 高級(jí)程序設(shè)計(jì)》)
而 IE 下的 Text Rang 主要用來處理文本,并非 DOM 節(jié)點(diǎn),那如何在 IE 下模擬 DOM Level2 中的 Range 呢?
根據(jù)規(guī)范的 API,我們需要模擬下述屬性和方法:
function zRange() { // Inital states this.startContainer = document; this.startOffset = 0; this.endContainer = document; this.endOffset = 0; this.commonAncestorContainer = document; this.collapsed = true;
// Range constants this.START_TO_START = 0; this.START_TO_END = 1; this.END_TO_END = 2; this.END_TO_START = 3; }
zRange.prototype = { // Public methods setStart : function(node, offset){}, setEnd : function(node, offset){}, setStartBefore : function(node){}, setStartAfter : function(node){}, setEndBefore : function(node){}, setEndAfter : function(node){}, collapse : function(toStart) {}, selectNode : function(node) {}, selectNodeContents : function(node){}, deleteContents : function() {}, extractContents : function(){}, cloneContents : function() {}, surroundContents : function () {}, insertNode : function(node) {}, cloneRange : function() {}, detach : function() {}, compareBoundaryPoints : function (how, sourceRange) {}, constructor : zRange }
出處:
責(zé)任編輯:bluehearts
上一頁 下一頁 模擬實(shí)現(xiàn)Range的insertNode()方法 [2]
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|