4

我正在尝试制作一个简单的 ubb 编辑器,但 document.selection.createRange() 在 IE 中不起作用,它不会得到任何突出显示的文本(尝试提醒突出显示的文本但什么也得不到)。我仍然无法找到原因并解决此问题。

您可以在此处查看此脚本的运行情况

window.onload = function () {
    var ubb = document.getElementById('ubb_code');
    var ubba = ubb.getElementsByTagName('a');//ubb buttons
    var textarea = document.getElementsByTagName('textarea')[0];//editable textarea filed 

    //onclick to insert ubbcode
    ubba[0].onclick = function() {
        tag('[b]','[/b]');
    };

    //function used to insert ubbcode
    function tag(tag1,tag2){
        // code for IE
        if (document.selection){
            textarea.focus();
            var sel = textarea.document.selection.createRange();//It DOES NOT work!
            //alert(sel.text);
            sel.text = tag1 + sel.text + tag2;
        }else{  
        // code for none-IE webbrowsers
            var len = textarea.value.length;
            var start = textarea.selectionStart;
            var end = textarea.selectionEnd;


            var scrollTop = textarea.scrollTop;
            var scrollLeft = textarea.scrollLeft;


            var sel = textarea.value.substring(start, end);
            //alert(sel);
            var rep = tag1 + sel + tag2;
            textarea.value =  textarea.value.substring(0,start) + rep + textarea.value.substring(end,len);

            textarea.scrollTop = scrollTop;
            textarea.scrollLeft = scrollLeft;
        }
}
4

2 回答 2

1

更新:IE9 支持此功能
http://msdn.microsoft.com/en-us/library/ie/ms536394(v=vs.85).aspx

if (document.selection.createRange) {       // Internet Explorer
    var range = document.selection.createRange();
    var selText = range.text;
    var htmltext = range.htmlText;                        
}
于 2012-08-17T08:31:18.650 回答
0

在 IE11 中,不再支持选择对象。您可以使用 window.getSelection 来实现相同的行为。有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/ie/ms535869(v=vs.85).aspx

于 2014-04-08T07:00:09.677 回答