JS range之保存光标位置,为 光标位置添加内容
2017-09-03 12:55
846 查看
在此,我们采用可编辑div作为编辑框,首先给编辑框获取focus加光标,然后,点击取消编辑框失去焦点,但是依然保存光标位置(假装失去焦点),然后,点击确定,为光标位置添加内容。
代码如下:
<button class="cancel">Cancel</button> <button class="Sure">Sure</button> <div contenteditable="true" id="textbox"> <strong>test</strong> <p>testtesttesttest</p> <strong>testtest</strong> <img src="1.jpg" alt="test"> </div>
代码如下:
<script src="js/jquery-3.2.1.min.js"></script> <script type="text/javascript"> $(function(){ $(".cancel").on("click", function(){ var text = ''; insertTextAtSelection(text); }) $(".Sure").on("click", function(){ var text = '<strong><i>加粗变斜体</i></strong>'; insertTextAtSelection(text,"html"); }) function insertTextAtSelection(text, mode) { var _this = this; var sel, range, node; mode = mode || ''; if (window.getSelection) { sel = window.getSelection(); if (sel.getRangeAt && sel.rangeCount) { range = sel.getRangeAt(0); // range.deleteContents(); var textNode = document.createTextNode(text); if (mode == "html") { var el = document.createElement("div"); el.innerHTML = text; var frag = document.createDocumentFragment(), node, lastNode; while ((node = el.firstChild)) { lastNode = frag.appendChild(node); } range.insertNode(frag); sel.removeAllRanges(); range = range.cloneRange(); sel.addRange(range); } else { console.log(textNode); range.insertNode(textNode); range.selectNode(textNode); } } } } }); </script>
相关文章推荐
- 用js控制按钮事件,将指定内容添加到文本域的光标所在位置。
- 可编辑div中如何在光标位置添加内容
- js实现在光标的位置 添加内容
- android listview 每一项都是edittext 导致的坑爹问题 内容的保存和焦点,光标位置的设置
- 2017-02-20 可编辑div中如何在光标位置添加内容
- 在光标位置添加内容
- Vue中使用Froala Editor时,外部方法调用html.insert()插入内容到光标最后停留位置功能实现
- JQuery在光标位置插入内容
- JQuery在光标位置插入内容
- 在光标位置插入内容的jquery实现方式
- c# word 在当前光标位置插入内容
- ie10以下focus同高版本的区别,光标位置不保存
- javascript获取textarea光标选择位置和内容方法(IE, Firefox)
- Vue中使用Froala Editor时,外部方法调用html.insert()插入内容到光标最后停留位置功能实现
- 可编辑div在光标位置插入指定内容
- javascript获取textarea光标选择位置和内容方法(IE, Firefox)
- 【jQuery插件】insertContent-在文本框光标位置插入内容并选中
- iframe编辑器光标位置插入内容方法,兼容IE和Firefox
- jquery实现在光标位置插入内容的方法
- javacpp-opencv图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作