DIV 粘贴插入文本或者其他元素后,移动光标到最新处

此文主要是可编辑div光标位置处理

1:首先 设置一个可编辑的DIV,注意:设置 contenteditable="true" 才可以编辑DIV

 <div id="talkContent" style="resize: none;height:150px;overflow:auto" contenteditable="true"></div>

2:移动光标js方法

//聊天内容框 插入文本或者其他元素后,移动置光标到最新处
function insertHtmlAtCaret(childElement) {
    var sel, range;
    if (window.getSelection) {
        // IE9 and non-IE
        sel = window.getSelection();
        if (sel.getRangeAt && sel.rangeCount) {
            range = sel.getRangeAt(0);
            range.deleteContents();

            var el = document.createElement("div");
            el.appendChild(childElement);
            var frag = document.createDocumentFragment(), node, lastNode;
            while ((node = el.firstChild)) {
                lastNode = frag.appendChild(node);
            }

            range.insertNode(frag);
            if (lastNode) {
                range = range.cloneRange();
                range.setStartAfter(lastNode);
                range.collapse(true);
                sel.removeAllRanges();
                sel.addRange(range);
            }
        }
    }
    else if (document.selection && document.selection.type != "Control") {
        // IE < 9
        //document.selection.createRange().pasteHTML(html);
    }
}

3:从光标现在的位置追加文本,成功后,光标在追加的文本后面

    insertHtmlAtCaret(document.createTextNode(‘这里是要追加的文本’));

4:从光标现在的位置追加元素,成功后,光标在追加的元素后面

  var new_img = document.createElement(‘img‘);
    new_img.setAttribute(‘src‘, ‘这是图片地址‘);
    new_img.style.maxWidth = "200px";
    new_img.style.maxHeight = "120px";
    insertHtmlAtCaret(new_img);
时间: 2024-11-11 15:55:42

DIV 粘贴插入文本或者其他元素后,移动光标到最新处的相关文章

js jquery插入元素后事件会被注销

  js jquery插入元素后事件会被注销 document.body.innerHTML += <div id="dd">test</div>  //这个会注销事件 $(document.body).append(str);//使用这个 也可以绑定事件. 例子: //快捷键双击 $(".app_shortcut_item").dblclick(function () { var id = $(this).attr("id&quo

lintcode 容易题:Product of Array Exclude Itself 数组剔除元素后的乘积

题目: 数组剔除元素后的乘积 给定一个整数数组A. 定义B[i] = A[0] * ... * A[i-1] * A[i+1] * ... * A[n-1], 计算B的时候请不要使用除法. 样例 给出A=[1, 2, 3],返回 B为[6, 3, 2] 解题: leftb计算左侧的连乘值,每次增加一个成绩,rightb计算右侧的连乘值,每次重新计算,时间复杂度O(N2),下面写的程序,自我感觉很差的... Java程序: public class Solution { /** * @param

ArcGis 中GraphicsLayer图层新加元素后map怎样更新

============问题描述============ RT,GraphicsLayer图层新加元素后,map没有更新,但是removeAll()方法却好使,请大神指点一下... ============解决方案1============ 没用过ArcGis啊,只能帮顶下了. ============解决方案2============ 感谢@,但是恕本菜才疏学浅,木有用过 ============解决方案3============ \samples\Display-Information\Dr

HTML中为何p标签内不可包含div标签?那哪些块元素里面不能放哪些块元素呢?

先看下面的例子你就能明白两者的差别: <p>测试一下块元素与<span>内联元素</span>的差别</p> <p>测试一下<div>块元素</div>与内联元素的差别</p> 在上面的例子中,<div>会自己产生一个新的行,而<span>并没有换行,这是在没有CSS渲染的情况下才这样,同样,我们也可以通过CSS把div定义成内联元素,把span定义成块元素,但是,我们却不能在HTML里

在有顺序的数列中插入一个元素后该数列仍然是有顺序的数组

/** 在有顺序的数组中插入一个元素后该数列仍然是有顺序的数组: 思路:先找到该元素的插入位置 插入数据时要先将数组中得元素后移,然后插入该元素 */ #include <stdio.h> #define  n 10 int main() { // 在有顺序的数列中插入一个元素后该数列仍然是有顺序的数列: int a[n] = {-1, 3, 6, 9, 13, 22, 27, 32, 49}; int insertVal; int insertLoc; scanf("%d"

jQuery动态添加html元素后,响应事件的问题记录

var li =     "<li>" +     "<a>" +        // 缩略图 点击部分 index='" + i + "'        "<span class='CameraImg' type='play' index='" + i + "'>" +          "<img src='/HiHomeBabyMS/Public/i

Javascript实现鼠标框选元素后拖拽被框选的元素

之前需要做一个框选元素后拖拽被框选中的元素功能,在网上找资料做了一些修改,基本达到了需要的效果,希望对也需要实现框选后拖拽元素功能的人有用. 页面加载后效果 框选后的内容可以拖拽,如下图: 代码下载

selenium获取元素后用click()点击没有作用,用Keys.ENTER就可以成功

selenium获取元素后用click()点击没有作用,用键盘输入enter(Keys.ENTER)就可以成功 #coding = utf-8 from selenium import webdriver from selenium.webdriver.common.keys import Keys driver = webdriver.Firefox() driver.get("http://www.baidu.com") driver.find_element_by_xpath(&

div中放入一个img元素导致div高度会多出几个像素

在写代码的时候经常遇到这样一个问题,如果div里嵌套一个img元素且div的高度是由img的高度来撑开,那么div的高度总会比img的高度多3px.好了,废话不多说,直接给大家上代码. html代码: <div id = "header"> <img src="img/header.png"/> </div> css代码: #header{ width : 400px ; border : 1px solid #000 ; /*