• JavaScript 中在光标处插入添加文本标签节点 详细方法


    正确的方法是正确运用Selection对象和Range对象,实现在光标当前位置插入文本或结点。但是这两个对象在IE和标准的DOM方式的运用方法是不同的。 


    思路:首先获得用户的选区(光标当前位置可理解成起始和终止位置一样的选区)。然后,从Selection对象转成Range对象。目的是利用Range对象的方法插内容进去。最后,插入动作结束后将光标移到插入内容的后面。 

    Html代码  收藏代码
    1. var sel = win.document.selection; //IE  
    2. var sel = win.getSelection(); //DOM  
    3.   
    4. var range = sel.createRange(); // IE下  
    5. var range = sel.getRangeAt(0); // DOM下  
    6.   
    7. if(range.startContainer){ // DOM下  
    8.     sel.removeAllRanges(); // 删除Selection中的所有Range  
    9.     range.deleteContents(); // 清除Range中的内容  
    10.     // 获得Range中的第一个html结点  
    11.     var container = range.startContainer;  
    12.     // 获得Range起点的位移  
    13.     var pos = range.startOffset;  
    14.     // 建一个空Range  
    15.     range = document.createRange();  
    16.     // 插入内容  
    17.     var cons = win.document.createTextNode(",:),");  
    18.       
    19.     if(container.nodeType == 3){// 如是一个TextNode  
    20.         container.insertData(pos, cons.nodeValue);  
    21.         // 改变光标位置  
    22.         range.setEnd(container, pos + cons.nodeValue.length);  
    23.         range.setStart(container, pos + cons.nodeValue.length);  
    24.     }else{// 如果是一个HTML Node  
    25.         var afternode = container.childNodes[pos];  
    26.         container.insertBefore(cons, afternode);  
    27.           
    28.         range.setEnd(cons, cons.nodeValue.length);  
    29.         range.setStart(cons, cons.nodeValue.length);  
    30.     }  
    31.     sel.addRange(range);  
    32. }else{// IE下  
    33.     var cnode = range.parentElement();  
    34.     while(cnode.tagName.toLowerCase() != “body”){  
    35.         cnodecnode = cnode.parentNode;  
    36.     }  
    37.     if(cnode.id && cnode.id==”rich_txt_editor”){  
    38.         range.pasteHTML(",:),");  
    39.     }  
    40. }  
    41. win.focus();  



    innerHTML 和 pasteHTML 区别 
    innerHTML 是一个属性,可以取得或者设定该元素内的 HTML 内容,可以是任意能包含 HTML 子节点的元素都使用它 

    pasteHTML()是一个方法,在指定的文字区域内替换该区域内的文本或者HTML,该方法必须应用于一个 createTextRange() 或者 document.selection.createRange() 创建的区域上

    Js代码  收藏代码
    1. var oRange = document.selection.createRange();  
    2.         if(oRange.text!=''){  
    3.             var oHtml = '<a href="#" target=_blank>oRange.text</a>';  
    4.             oRange.pasteHTML(oHtml);  
    5.         }  
     
    分类: javascript
  • 相关阅读:
    C# 重载,重写,代理,枚举实例
    关于C#7 新语法糖
    关于C# 异步
    经验
    C# 后台模块 Word 模板操作
    .Net 图片生成水印
    .Net XML操作
    .Net web 关于表单标题
    分页存储过程
    python 爬虫 猫眼视频榜单top100
  • 原文地址:https://www.cnblogs.com/yingzi/p/2518195.html
Copyright © 2020-2023  润新知