`
wwwwwhg
  • 浏览: 47530 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
文章分类
社区版块
存档分类
最新评论

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

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

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

var sel = win.document.selection; //IE
var sel = win.getSelection(); //DOM

var range = sel.createRange(); // IE下
var range = sel.getRangeAt(0); // DOM下

if(range.startContainer){ // DOM下
	sel.removeAllRanges(); // 删除Selection中的所有Range
	range.deleteContents(); // 清除Range中的内容
	// 获得Range中的第一个html结点
	var container = range.startContainer;
	// 获得Range起点的位移
	var pos = range.startOffset;
	// 建一个空Range
	range = document.createRange();
	// 插入内容
	var cons = win.document.createTextNode(",:),");
	
	if(container.nodeType == 3){// 如是一个TextNode
		container.insertData(pos, cons.nodeValue);
		// 改变光标位置
		range.setEnd(container, pos + cons.nodeValue.length);
		range.setStart(container, pos + cons.nodeValue.length);
	}else{// 如果是一个HTML Node
		var afternode = container.childNodes[pos];
		container.insertBefore(cons, afternode);
		
		range.setEnd(cons, cons.nodeValue.length);
		range.setStart(cons, cons.nodeValue.length);
	}
	sel.addRange(range);
}else{// IE下
	var cnode = range.parentElement();
	while(cnode.tagName.toLowerCase() != “body”){
		cnode = cnode.parentNode;
	}
	if(cnode.id && cnode.id==”rich_txt_editor”){
		range.pasteHTML(",:),");
	}
}
win.focus();


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

pasteHTML()是一个方法,在指定的文字区域内替换该区域内的文本或者HTML,该方法必须应用于一个 createTextRange() 或者 document.selection.createRange() 创建的区域上
var oRange = document.selection.createRange();
		if(oRange.text!=''){
	        var oHtml = '<a href="#" target=_blank>oRange.text</a>';
	        oRange.pasteHTML(oHtml);
        }


分享到:
评论

相关推荐

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

    总结来说,要在JavaScript中实现在光标处插入文本标签节点的功能,我们需要考虑浏览器兼容性问题,并熟练使用Selection和Range对象。通过上述方法,我们可以实现在文档中的任何位置插入文本和节点,这对于提高Web...

    javascript 在光标处插入指定内容

    以下是一个简单的例子,展示了如何在光标处插入文本: ```javascript function insertAtCursor(element, text) { if (document.activeElement !== element) { element.focus(); } // 创建一个新的文本节点 ...

    DIV可编辑模式在光标位置插入内容

    然后,创建一个包含要插入文本的新文本节点,并使用`range.insertNode()`方法将其插入到光标位置。最后,更新选区,使光标位于新插入的文本之后。 在实际应用中,可能还需要处理更多细节,例如合并相邻的文本节点、...

    javascript实现 在光标处插入指定内容

    javascript实现 在光标处插入指定内容 javascript是一种广泛应用于网页开发的脚本语言,它可以实现很多有趣和实用的功能。今天,我们来学习如何使用javascript实现在光标处插入指定内容。 在上面的代码中,我们...

    jQuery插件 文本框、文本域 光标处插入代码

    在“jQuery插件 文本框、文本域 光标处插入代码”这个场景中,插件的目的是在用户选定的光标位置插入代码或HTML元素,如图片(`&lt;img&gt;`标签)。这通常涉及到获取当前光标位置、创建新的文本节点或元素、然后将它们...

    光标处插入,兼容IE6,IE7,FF等,适用于编辑器,浏览插入表情

    本文将围绕“光标处插入”这一主题,深入探讨如何在不同的浏览器环境下,如IE6、IE7和Firefox(FF)中实现兼容性的光标插入功能,特别适用于编辑器中的表情浏览和插入。 首先,让我们了解光标插入的基本概念。在Web...

    文本域定位光标并添加数据

    在JavaScript中,我们可以使用`document.getElementById('yourTextField').focus()`来将焦点移动到特定的文本域,然后通过`setSelectionRange()`或`createTextRange()`方法设置光标的起始和结束位置。 例如,如果你...

    javascript 操作 dom 的常用方法

    1. `appendChild` 方法:这个方法用于在指定元素的子节点列表末尾添加一个新的子节点。在示例中,`fnAppend`函数创建了一个新的`&lt;LI&gt;`元素并将其添加到ID为`oList`的无序列表中。点击按钮,列表就会新增一个包含文本...

    JavaScript 中各种特效 源码

    5. **表格操作**:在JavaScript中,可以动态地创建、修改和操作表格,比如插入、删除行或列,改变单元格内容,甚至实现表格排序和过滤功能。 6. 边框特效:通过JavaScript可以实现动态边框,如闪烁、滑动或渐变效果...

    JS实现iframe编辑器光标位置插入内容的方法(兼容IE和Firefox)

    在JavaScript中,对于基于iframe的编辑器,有时我们需要在用户光标所在的位置插入文本或者图片。本文将详细讲解如何实现这个功能,并确保其在IE和Firefox这两个主流浏览器中都能正常工作。 首先,我们需要一个简单...

    javascript get cursor

    2. **富文本编辑器**:在富文本编辑器中,用户可能需要在特定位置插入文本或格式化文本,此时就需要精确控制光标位置。 3. **自动补全功能**:在输入框中输入时,光标后可能会自动添加建议的文本,此时需要保留原...

    获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍

    在网页开发中,常常需要获取用户在输入框、文本区域或可编辑的div元素中光标的位置,以便实现某些特定功能。由于不同浏览器(如IE、Firefox和Chrome)之间存在兼容性差异,因此统一实现这一功能具有一定的挑战性。...

    在kindEditor中获取当前光标的位置索引的实现代码

    在网页富文本编辑器开发中,KindEditor是一个广泛使用的开源编辑器,它提供了丰富的功能和...通过`startOffset`和`endOffset`,我们可以精确地定位光标位置,从而实现诸如插入文本、高亮选择、查找替换等一系列功能。

    jQuery实现在textarea指定位置插入字符或表情的方法

    本文将深入探讨如何使用jQuery实现在textarea指定位置插入字符或表情的方法,这对于构建具有富文本编辑功能的应用非常有用。 首先,我们要创建一个自定义的jQuery插件方法,名为`insertAtCaret`。这个方法会接受一...

    javascript实现自动输出文本(打字特效)

    但可以推测该方法会使用原生JavaScript函数,通过循环或递归逐个创建文本节点,并将其插入到指定的HTML元素中,同时控制显示时间来达到打字效果。 ### 总结 通过上述方法,我们可以使用JavaScript为网页添加具有...

    移动端带表情的评论

    这涉及到对DOM(文档对象模型)的操作,可能包括获取光标位置、创建新的文本节点以及插入表情元素等步骤。 3. **表情编码与解码**:为了让服务器能够正确处理带有表情的评论,需要将表情编码为服务器可理解的形式。...

    js移动焦点到最后位置的简单方法

    在JavaScript编程中,有时我们需要对输入框(input)或文本区域(textarea)进行操作,确保当用户聚焦到这些元素时,光标会自动移动到最后,这样用户可以直接开始输入,而无需手动滚动到文本末尾。这种方法可以提升...

    jquery 示例

    - 在jQuery中,可以使用JavaScript的数组方法,如 `.push()`, `.pop()`, `.shift()`, `.unshift()` 来管理数组元素。此外,jQuery还提供了如 `.each()` 方法来遍历数组。此示例可能涉及到这些数组操作的实践,比如...

    超实用的jQuery代码段

    超实用的jQuery代码段精选近350个jQuery代码段,涵盖页面开发中绝大多数要点、技巧与方法,堪称史上最实用的jQuery代码参考书,可以视为网页设计与网站建设人员的好帮手。《超实用的jQuery代码段》的代码跨平台、跨...

Global site tag (gtag.js) - Google Analytics