将内容插入/删除到给定位置的contenteditable元素中
Insert / delete content into contenteditable element at given position
我想对内容可编辑元素应用插入或删除操作。示例:
element = $('.content')
op = {insert: 'This works', pos:32}
applyOperation(element, op)
将转换:
<div class='content'><i>anything</i> something else <i>anything else</i></div>
进入:
<div class='content'><i>anything</i> something else This works<i>anything else</i></div>
限制:我希望避免全部内容替换。
注意:现在不要为HTML的有效性和选择/carret位置而烦恼,我会处理好的。
我为您编写以下函数:
/**
* @author Georgi Naumov
* gonaumov@gmail.com
* http://georgi-naumov.blogspot.com/
**/
function applyOperation(element, op) {
if(typeof op['insert'] != 'undefined' && typeof op['pos'] != 'undefined') {
var resultHtml = element.html().replace(new RegExp("((?:[^'s]|['s]+){" + op['pos'] + "})"), "$1" + op['insert']);
element.html(resultHtml);
return element;
}
}
以下是工作jsfiddle:http://jsfiddle.net/zono/qY5yg/
我做了很多研究。答案是:以非破坏性的方式实现这一点相当困难。
然而,詹姆斯·帕多尔西写了两篇关于这个问题的优秀文章,第二篇文章给出了答案。并制作了一个供所有人使用的库。
该解决方案涉及到文本节点的拆分和合并(通过normalize()
)。真是好东西。
相关文章:
- 在地图加载/页面加载时,我想将地图设置为当前地理位置,但不想在地图上显示定位图标
- JQuery定位:我可以滚动到正确的位置一次,但不能滚动两次
- 如何在jquerymobile中同时放置两个定位的经纬度位置
- Javascript / 根据一个元素的位置定位另一个元素
- 如何定位“隐藏”的 iframe?(应用程序:链接到嵌入“隐藏的海报图像”嵌入的 Youtube 视频的起始位置)
- 与位置的相对定位:绝对
- 在没有“位置”属性的情况下实现绝对定位,使用边距/填充
- 用于相对于用户在约束内单击的位置定位框的数学公式
- 运行地理位置定位的 js 文件
- 如果定位服务关闭,英特尔 XDK 地理位置将找不到纬度/经度
- 在 iPad 上绝对定位不会将元素设置在所需位置
- 如何使用 jQuery 计算相对定位元素的绝对位置*没有*
- 如果php返回位置头,我如何在jquery ajax中定位页面
- 试着根据父母的位置来定位孩子
- 地理定位api没有给出准确的用户位置
- 定位父元素,使子元素处于完全相同的位置
- 如何在Javascript/Mootools中根据页面上不同对象的位置定位箭头
- 使用javascript查找元素相对于最近相对定位的父元素的位置
- 多个谷歌位置请求功能(药房定位器)
- 点击html5地理定位当前位置,然后减去两点