HTML编辑器失去焦点后在原来光标位置插入信息/图片
日期:2010-06-18
示例代码参考
在制作html编辑器,有些时候iframe编辑器需要失去焦点,然后进行一些处理操作,如上传图片,编辑其他的信息后将上传的图片或者编辑好的信息插入到原来html编辑器原光标的位置。
在firefox下调用focus函数可以使光标回复到原来的位置,但是IE下光标处于html编辑器的头,所以要想在原来的位置插入相关信息,需要保存range对象,然后操作完后使用range对象在原来的位置进行操作。
下面是在当编辑器获取焦点后,然后在text中输入一些信息,然后点击按钮将输入的信息插入到html编辑器原来光标的位置处。
对于插入图片也差不多,在点击某个按钮的时候先调用SaveRange函数保存range对象,在插入函数中判断是否存在range对象,内容和insert函数差不多。
HTML<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=" http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=gb2312" />
<title>HTML编辑失去焦点后在原来光标位置插入信息/图片--编程设计网</title>
<script type="text/javascript">
var isIE=!!document.all,ieRange=false,editor,win,doc,txt;
window.onload=function(){
editor=document.getElementById('editor');
win=editor.contentWindow;
doc=win.document;
txt=document.getElementById('txt');
doc.designMode='On';//可编辑
win.focus();
}
function SaveRange(){//IE下保存Range对象
if(isIE&&!ieRange){//是否IE并且判断是否保存过Range对象
var sel=doc.selection;
ieRange=sel.createRange();
if(sel.type!='Control'){//选择的不是对象
var p=ieRange.parentElement();//判断是否在编辑器内
if(p.tagName=="INPUT"||p==document.body)ieRange=false;
}
}
}
function insert(){
if(txt.value==''){alert('请输入内容!'); txt.focus();return false;}
if(ieRange){
ieRange.pasteHTML(txt.value);
txt.value='';
ieRange.select();ieRange=false;//清空下range对象
}
else{//焦点不在html编辑器内容时
win.focus();
if(isIE)doc.body.innerHTML+=txt.value;//IE插入在最后
else{//Firefox
var sel=win.getSelection(),rng=sel.getRangeAt(0),frg=rng.createContextualFragment(txt.value);
rng.insertNode(frg);
}
}
}
</script>
</head>
<body>
<br >
<iframe style="width:300px;height:200px" id="editor"></iframe>
<br >内容:<input type="text" id="txt" onmousedown="SaveRange()" />
<input type="button" onclick="insert()" onmousedown="SaveRange()" value="插入输入的字符在HTML编辑器原位置" />
</body>
</html>
分享到:
相关推荐
它的一个独特功能是在编辑器失去焦点后,用户仍能在之前的位置插入图片,这在很多编辑器中并不常见。那么,它是如何实现这一功能的呢?本文将深入探讨其背后的实现机制。 首先,我们需要了解在JavaScript中处理文本...
接着,调用“插入文本”命令在光标位置插入了字符串“你好,世界!”。最后,更新光标位置到新文本的末尾,以便用户可以继续输入。 需要注意的是,易语言中的某些函数和命令可能因版本不同而有所变化,实际编写代码...
标题“光标从编辑器移入本页面中的其它输入域后,IE中每次只在编辑器首部插入内容”所涉及的问题,主要集中在Web开发中的浏览器兼容性问题,特别是针对Internet Explorer(IE)浏览器的特定行为。在Web应用中,编辑...
标题中的"javascript控制在光标位置插入文字适合表情的插入"描述了一种使用JavaScript实现的功能,即在文本框(textarea)的当前光标位置插入特定的文字或表情。这个功能常见于许多聊天应用或编辑器中,允许用户在...
"易语言源码易语言光标处插入文本"这个压缩包文件,从名称上看,显然是包含了使用易语言编写的源代码,其主要功能是关于在文本编辑器或程序的光标位置插入文本。 易语言的语法结构清晰,其基本组成包括指令、常量、...
在处理`<textarea>`光标位置插入文字并移动光标到文字末尾的操作时,主要涉及两个关键属性:`selectionStart`和`selectionEnd`,以及在IE中使用的`document.selection`对象。 `selectionStart`和`selectionEnd`是...
本文实例讲述了JS实现iframe编辑器光标位置插入内容的方法。分享给大家供大家参考,具体如下: <html> <iframe id="x" name="x"></iframe> <input type="button" onclick="t()" value="test"&...
JavaScript获取光标位置是网页开发中的一个重要功能,它在用户输入、文本编辑或者富文本处理等场景中扮演着关键角色。这个功能可以帮助开发者精确地控制用户在文本输入框中的光标定位,例如在某些特定字符后插入文本...
这在创建富文本编辑器、表单验证或任何需要动态控制输入焦点的应用程序中是非常有用的。 首先,让我们理解光标位置的基本概念。在HTML的可编辑元素(如`<input>`、`<textarea>`)中,光标位置表示用户正在输入或...
C#中实现WinForm的RichTextBox控件在指定光标位置插入图片的方法主要涉及到以下几个知识点和技术点: 1. **RichTextBox控件**:在.NET框架中,RichTextBox是一个能够处理带有格式化文本的多行文本框控件。它支持...
为了实现更复杂的功能,例如在多行文本域中操作,可能需要使用`contenteditable`属性或富文本编辑器(如TinyMCE、CKEditor),它们提供了更多的API来处理光标和文本操作。 总结一下,文本域的光标定位和数据添加是...
在实际应用中,我们可以使用这段javascript代码来实现很多有趣的功能,例如在聊天室中插入表情符号、在文本编辑器中插入格式化的文本等等。这段代码也可以作为其他javascript代码的基础,以便我们可以实现更多的功能...
该知识点的核心是编写一个能够在网页中的textarea元素里,基于当前光标位置插入字符串的JavaScript函数。这个功能对于开发者来说十分重要,它允许他们在用户界面中动态地添加内容,提升用户体验。 在提供的代码片段...
在网页开发中,有时我们需要实现一个功能,即在用户输入的文本框(input)光标位置插入特定的字符串。这个功能对于编辑器、富文本处理等场景尤其有用。本文将详细解析如何实现这个功能,同时确保兼容IE和Firefox这两...
以下是一个简单的JavaScript函数,它可以在当前光标位置插入文本: ```javascript function insertText(text) { var element = document.getElementById('editableDiv'); var range = window.getSelection()....
- **InsertHtml(html)**:在当前光标位置插入HTML代码。 - **IsDirty()**:检查编辑器中的内容是否已被修改。 #### 事件 FCKeditor支持多种事件,这些事件可以帮助开发者更好地控制编辑器的行为。例如,可以使用`...
- **TAB**:用于切换焦点或者在文本输入中插入制表符。 - **ENTER**:确认操作或提交输入。 - **DEL**:删除光标所在位置的字符。 - **BACKSPACE**:删除光标前面的字符。 #### 2. 功能键定义 - **F1~F12**:通常...
参数值:编辑器所在的根路径,用在某些特殊情况下定位编辑器的根路径,默认为空,读取默认的编辑器根路径 备注:v1.1.0新添加 shortcuts:自定义键盘快捷方式 参数:快捷键对应事件代码的对象数组 示例:{'ctrl+...
但一旦组件在非用户交互下(如程序更新数据后)改变了内容,光标位置可能会丢失。例如,当div中的内容被清空或新增时,用户可能发现光标不在预期的位置,而是在div的开始位置。这种体验对于用户来说是非常不友好的。...