| 3833 | | HTMLArea.prototype.ie_checkBackspace = function() { |
| 3834 | | var sel = this._getSelection(); |
| 3835 | | if(HTMLArea.is_ie && sel.type == 'Control') |
| 3836 | | { |
| 3837 | | var elm = this._activeElement(sel); |
| 3838 | | HTMLArea.removeFromParent(elm); |
| 3839 | | return true; |
| 3840 | | } |
| | 3833 | if (HTMLArea.is_ie) |
| | 3834 | { |
| | 3835 | HTMLArea.prototype.checkBackspace = function() { |
| | 3836 | var sel = this._getSelection(); |
| | 3837 | if(sel.type == 'Control') |
| | 3838 | { |
| | 3839 | var elm = this._activeElement(sel); |
| | 3840 | HTMLArea.removeFromParent(elm); |
| | 3841 | return true; |
| | 3842 | } |
| 3842 | | // This bit of code preseves links when you backspace over the |
| 3843 | | // endpoint of the link in IE. Without it, if you have something like |
| 3844 | | // link_here | |
| 3845 | | // where | is the cursor, and backspace over the last e, then the link |
| 3846 | | // will de-link, which is a bit tedious |
| 3847 | | var range = this._createRange(sel); |
| 3848 | | var r2 = range.duplicate(); |
| 3849 | | r2.moveStart("character", -1); |
| 3850 | | var a = r2.parentElement(); |
| 3851 | | if (a != range.parentElement() && |
| 3852 | | /^a$/i.test(a.tagName)) { |
| 3853 | | r2.collapse(true); |
| 3854 | | r2.moveEnd("character", 1); |
| 3855 | | r2.pasteHTML(''); |
| 3856 | | r2.select(); |
| 3857 | | return true; |
| 3858 | | } |
| 3859 | | }; |
| 3860 | | |
| 3861 | | HTMLArea.prototype.dom_checkBackspace = function() { |
| 3862 | | var self = this; |
| 3863 | | setTimeout(function() { |
| 3864 | | var sel = self._getSelection(); |
| 3865 | | var range = self._createRange(sel); |
| 3866 | | var SC = range.startContainer; |
| 3867 | | var SO = range.startOffset; |
| 3868 | | var EC = range.endContainer; |
| 3869 | | var EO = range.endOffset; |
| 3870 | | var newr = SC.nextSibling; |
| 3871 | | if (SC.nodeType == 3) |
| 3872 | | SC = SC.parentNode; |
| 3873 | | if (!/\S/.test(SC.tagName)) { |
| 3874 | | var p = document.createElement("p"); |
| 3875 | | while (SC.firstChild) |
| 3876 | | p.appendChild(SC.firstChild); |
| 3877 | | SC.parentNode.insertBefore(p, SC); |
| 3878 | | HTMLArea.removeFromParent(SC); |
| 3879 | | var r = range.cloneRange(); |
| 3880 | | r.setStartBefore(newr); |
| 3881 | | r.setEndAfter(newr); |
| 3882 | | r.extractContents(); |
| 3883 | | sel.removeAllRanges(); |
| 3884 | | sel.addRange(r); |
| | 3844 | // This bit of code preseves links when you backspace over the |
| | 3845 | // endpoint of the link in IE. Without it, if you have something like |
| | 3846 | // link_here | |
| | 3847 | // where | is the cursor, and backspace over the last e, then the link |
| | 3848 | // will de-link, which is a bit tedious |
| | 3849 | var range = this._createRange(sel); |
| | 3850 | var r2 = range.duplicate(); |
| | 3851 | r2.moveStart("character", -1); |
| | 3852 | var a = r2.parentElement(); |
| | 3853 | if (a != range.parentElement() && |
| | 3854 | /^a$/i.test(a.tagName)) { |
| | 3855 | r2.collapse(true); |
| | 3856 | r2.moveEnd("character", 1); |
| | 3857 | r2.pasteHTML(''); |
| | 3858 | r2.select(); |
| | 3859 | return true; |
| 3886 | | }, 10); |
| 3887 | | }; |
| | 3861 | }; |
| | 3862 | } |
| | 3863 | else |
| | 3864 | { |
| | 3865 | HTMLArea.prototype.checkBackspace = function() { |
| | 3866 | var self = this; |
| | 3867 | setTimeout(function() { |
| | 3868 | var sel = self._getSelection(); |
| | 3869 | var range = self._createRange(sel); |
| | 3870 | var SC = range.startContainer; |
| | 3871 | var SO = range.startOffset; |
| | 3872 | var EC = range.endContainer; |
| | 3873 | var EO = range.endOffset; |
| | 3874 | var newr = SC.nextSibling; |
| | 3875 | if (SC.nodeType == 3) |
| | 3876 | SC = SC.parentNode; |
| | 3877 | if (!/\S/.test(SC.tagName)) { |
| | 3878 | var p = document.createElement("p"); |
| | 3879 | while (SC.firstChild) |
| | 3880 | p.appendChild(SC.firstChild); |
| | 3881 | SC.parentNode.insertBefore(p, SC); |
| | 3882 | HTMLArea.removeFromParent(SC); |
| | 3883 | var r = range.cloneRange(); |
| | 3884 | r.setStartBefore(newr); |
| | 3885 | r.setEndAfter(newr); |
| | 3886 | r.extractContents(); |
| | 3887 | sel.removeAllRanges(); |
| | 3888 | sel.addRange(r); |
| | 3889 | } |
| | 3890 | }, 10); |
| | 3891 | }; |
| | 3892 | } |