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

来源:未知 责任编辑:责任编辑 发表时间:2014-05-10 12:24 点击:

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

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


01
var sel = win.document.selection; //IE
02
var sel = win.getSelection(); //DOM
03
 
04
var range = sel.createRange(); // IE下
05
var range = sel.getRangeAt(0); // DOM下
06
 
07
if(range.startContainer){ // DOM下
08
    sel.removeAllRanges(); // 删除Selection中的所有Range
09
    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
        cnode = cnode.parentNode;
36
    }
37
    if(cnode.id && cnode.id==”rich_txt_editor”){
38
        range.pasteHTML(",:),");
39
    }
40
}
41
win.focus();
innerHTML 和 pasteHTML 区别  

发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • Gb2312转utf-8编码的方法(vbs+js)
  • 如何使用Ajax技术开发Web应用程序(1)
  • js跳转路径问题
  • JavaScript模仿桌面窗口
  • 用js检测两个线段是否相交
  • 我知道的JavaScript -- 设计模式(桥接)应用之 – 验证器
  • 运用JavaScript构建你的第一个Metro式应用程序(on Windows
  • 我是如何去了解jquery的(六),案例之幻灯片轮换
  • Jquery封装幻灯片效果
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1