Changeset 451
- Timestamp:
- 01/18/06 23:07:23 (7 years ago)
- Files:
-
- 1 modified
-
trunk/htmlarea.js (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/htmlarea.js
r450 r451 2771 2771 * selection. The selection is removed. It splits a text node, if needed. 2772 2772 */ 2773 HTMLArea.prototype.insertNodeAtSelection = function(toBeInserted) { 2774 if (!HTMLArea.is_ie) { 2773 if (!HTMLArea.is_ie) 2774 { 2775 HTMLArea.prototype.insertNodeAtSelection = function(toBeInserted) 2776 { 2775 2777 var sel = this._getSelection(); 2776 2778 var range = this._createRange(sel); … … 2780 2782 var node = range.startContainer; 2781 2783 var pos = range.startOffset; 2782 switch (node.nodeType) { 2783 case 3: // Node.TEXT_NODE 2784 // we have to split it at the caret position. 2785 if (toBeInserted.nodeType == 3) { 2786 // do optimized insertion 2787 node.insertData(pos, toBeInserted.data); 2788 range = this._createRange(); 2789 range.setEnd(node, pos + toBeInserted.length); 2790 range.setStart(node, pos + toBeInserted.length); 2791 sel.addRange(range); 2792 } else { 2793 node = node.splitText(pos); 2784 switch (node.nodeType) 2785 { 2786 case 3: // Node.TEXT_NODE 2787 // we have to split it at the caret position. 2788 if (toBeInserted.nodeType == 3) 2789 { 2790 // do optimized insertion 2791 node.insertData(pos, toBeInserted.data); 2792 range = this._createRange(); 2793 range.setEnd(node, pos + toBeInserted.length); 2794 range.setStart(node, pos + toBeInserted.length); 2795 sel.addRange(range); 2796 } 2797 else 2798 { 2799 node = node.splitText(pos); 2800 var selnode = toBeInserted; 2801 if (toBeInserted.nodeType == 11 /* Node.DOCUMENT_FRAGMENT_NODE */) 2802 { 2803 selnode = selnode.firstChild; 2804 } 2805 node.parentNode.insertBefore(toBeInserted, node); 2806 this.selectNodeContents(selnode); 2807 this.updateToolbar(); 2808 } 2809 break; 2810 case 1: // Node.ELEMENT_NODE 2794 2811 var selnode = toBeInserted; 2795 if (toBeInserted.nodeType == 11 /* Node.DOCUMENT_FRAGMENT_NODE */) { 2812 if (toBeInserted.nodeType == 11 /* Node.DOCUMENT_FRAGMENT_NODE */) 2813 { 2796 2814 selnode = selnode.firstChild; 2797 2815 } 2798 node. parentNode.insertBefore(toBeInserted, node);2816 node.insertBefore(toBeInserted, node.childNodes[pos]); 2799 2817 this.selectNodeContents(selnode); 2800 2818 this.updateToolbar(); 2801 }2802 2819 break; 2803 case 1: // Node.ELEMENT_NODE 2804 var selnode = toBeInserted; 2805 if (toBeInserted.nodeType == 11 /* Node.DOCUMENT_FRAGMENT_NODE */) { 2806 selnode = selnode.firstChild; 2807 } 2808 node.insertBefore(toBeInserted, node.childNodes[pos]); 2809 this.selectNodeContents(selnode); 2810 this.updateToolbar(); 2811 break; 2812 } 2813 } else { 2820 } 2821 }; 2822 } 2823 else 2824 { 2825 HTMLArea.prototype.insertNodeAtSelection = function(toBeInserted) 2826 { 2814 2827 return null; // this function not yet used for IE <FIXME> 2815 } 2816 } ;2828 }; 2829 } 2817 2830 2818 2831 // Returns the deepest node that contains both endpoints of the selection.
