当插入符进入 contenteditable div 中的 span 元素时触发事件

2024-03-15

我有一个内容可编辑的 div,其跨度如下:

<div contenteditable="true">some <span>spanned</span> text</div>

我想知道是否有任何事件监听器可以附加到span元素本身可用于检测插入符是否在元素内部移动span元素。

我并不是在寻找有听众的答案div,每次有活动时运行检查div,比如这个答案的解决方案:

当插入符进入特定 div/span/a 标签以及插入符离开标签时触发事件 https://stackoverflow.com/questions/27004757/firing-an-event-when-the-caret-gets-within-a-particular-div-span-a-tag-and-also


你可以使用变异观察者 https://developer.mozilla.org/de/docs/Web/API/MutationObserver。并检查characterData观察者回调中的变化。

这是一个例子:

var MutationObserver = 
		window.MutationObserver || 
		window.WebKitMutationObserver || 
		window.MozMutationObserver;

var config = { childList: true, characterData: true, characterDataOldValue:true, subtree: true };

var target = document
.querySelector('div[contenteditable]')
.getElementsByTagName('span')
.item(0);

var observer = new MutationObserver(function(mutations) {
	mutations.forEach(function(mutation) {
		if (mutation.type === 'characterData') {
			console.clear();
			console.log('old value:', mutation.oldValue);
			console.log('new value:', mutation.target.textContent);
		}
	});
});

observer.observe(target, config);
<div contenteditable="true">some <span>spanned</span> text</div>

检查插入符是否刚刚进入span一个简单的click听众应该做这项工作。

var target = document
.querySelector('div[contenteditable]')
.getElementsByTagName('span')
.item(0)
.addEventListener('click', function(evt) {
	console.log('caret entered:', evt.target)
})
<div contenteditable="true">some <span>spanned</span> text</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当插入符进入 contenteditable div 中的 span 元素时触发事件 的相关文章

  • 将引导程序中的表单居中不起作用[重复]

    这个问题在这里已经有答案了 我试图将我的表单置于 div 中 但我使用的方法不起作用 我尝试使用引导文档中所述的 justify content center 属性 但它没有将其居中 当我尝试将其居中但应用时display flex and
  • Webpack 和 Angular HTML 图像加载

    我一直对 webpack 和 Angular 感到头疼 这可能有一个简单的答案 但我无法弄清楚 我已经阅读了堆栈溢出中关于这个主题的几乎所有答案 但都无济于事 我有一个像这样的 html 页面 还有其他包含图像的模板 img
  • Twitter Bootstrap 轮播在加载时自动播放

    使用twitter bootstrap框架 如何调用轮播来 自动滑动 这意味着当页面加载时 轮播会自动滚动 我尝试过 javascript onLoad click 函数 a 下一个链接的 但这不起作用 你应该这样做Twitter Boot
  • 语法:const {} = 变量名,任何人都可以解释或指出我正确的方向[重复]

    这个问题在这里已经有答案了 这个语法在 JavaScript 中意味着什么 可能是 ES6 const 变量名 我目前正在尝试掌握 React 在很多例子中我都遇到过这种语法 例如 const girls guys women men st
  • getElementsByClassName & IE8:对象不支持此属性或方法[重复]

    这个问题在这里已经有答案了 I know getElementsByClassName 不支持IE8 你知道我可以用什么来代替吗 我因错误而变得烦人 对象不支持此属性或方法 HTML 代码是 function sumar var elems
  • Vue Draggable - 如何仅替换所选项目以防止移动网格上的所有其他项目?

    这是一个要测试的示例 https codesandbox io s j4vn761455 file src App vue 112 116 https codesandbox io s j4vn761455 file src App vue
  • SVG 中三角形的圆角

    我正在尝试制作一个具有圆角的三角形 三角形将如下所示 左下角是唯一看起来相当容易制作的角 主要是因为这是一个 90 度的 转弯 该转弯是使用QSVG 中的命令具有以下参数 Q x y height x y height RADIUS从我正在
  • JavaScript 原型 - 请澄清

    有人可以帮我理解原型属性吗 我不明白原型属性是函数的属性还是函数内部的属性 假设我们创建以下构造函数 Food 此时 函数 Food 具有 Food prototype 属性 由于 Food 是 Object 的实例 因此这意味着 Obec
  • AngularJS - 服务、工厂、过滤器等中的依赖注入

    因此 我想在我的 Angular 应用程序中使用一些插件和库 目前 我只是引用这些函数 方法 因为它们是在 99 的应用程序中以完全忽略依赖注入的方式使用的 我有 例如 javascript 库 MomentJS 它处理格式化和验证日期 并
  • 使用 jQuery/JavaScript 将文本框值复制到剪贴板

    我有一个文本框和按钮 如下所示 div class col xs 11 style padding 20px 0 div
  • 如何正确删除动画集中引用的 Raphael SVG 元素?

    我有一组动画 Raphael SVG 元素 我正在通过用户发起的 ajax 调用添加新元素并删除旧元素 我 set push 新元素 但因为我需要删除的元素通常不是集合中的最后一个元素 所以我使用 element remove 而不是 se
  • 清理 html 字符串中的所有脚本

    HTML5 剪贴板很棒 但我正在寻找一种使其安全的方法 用户正在将文本 html 粘贴到我的网页中 这允许他们粘贴图像 表格等 我正在寻找一种方法 在将粘贴的内容添加到页面之前删除所有脚本 我需要删除

  • 有多少像素? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 一个有多少像素 br 标签添加 我知道 br 高度可以通过CSS控制line height财产 不同浏览器的值是否相同 它会添加与浏览
  • 不可见的 reCAPTCHA - 缺少必需的参数:sitekey

    我正在为每个带有具有类的按钮的表单动态加载不可见的 reCAPTCHAg recaptcha 我遇到的问题是验证码未正确加载 我不知道为什么 我按照验证码网站上的文档进行操作 但我不确定如何以及为什么会出现此错误 Uncaught Erro
  • 当选项卡重新加载(chrome 扩展)时,如何运行此脚本?

    所以我想在指定 URL 中重新加载选项卡时运行脚本 它几乎可以工作 但实际上 id 不能 这是我的清单文件 manifest version 2 name Sample Extension description Sample Chrome
  • 如何仅突出显示嵌套表的最里面的表行?

    我有几个嵌套表 我想突出显示鼠标指针下方的最里面的行 我怎样才能做到这一点 一些提示 我使用嵌套表来显示递归表格数据 表可以嵌套 10 层 嵌套正如您所期望的那样 table tr td table tr td table tr td 可能
  • ES6 Reflect API 的好处

    我一直在努力升级一些代码以使用 ES6 语法 我有以下代码行 delete this foo 我的 linter 提出了使用建议 Reflect deleteProperty this foo 您可以找到该方法的文档here https d
  • 如何从react-bootstrap复选框获取值/属性?

    我正在尝试使用反应引导复选框 https react bootstrap github io components html forms controls https react bootstrap github io components
  • 将 Angular Web 组件 EventEmitter 监听到 javascript

    我在以下工具的帮助下创建了一个小型网络组件本文 https medium com IMM9O web components with angular d0205c9db08f使用角度元素 其中包括 Input and Output 我能够将
  • R闪亮:使用闪亮的JS从数据表中获取信息

    我想读出所有列名称以及它们在数据表中显示的顺序 由于不同的原因 我无法使用 stateSave 等选项 我对 JS 没有什么把握 但我确信用它可以完成 所以我需要你帮助我 我尝试过类似的代码片段 datatable data callbac

随机推荐

  • 我可以结束asp.net mvc中视图的渲染吗

    所以我试图找出一种方法 如果我的模型为空 则可以呈现错误消息 并且在该错误消息之后视图应该停止渲染 这可能吗 我的第一个想法是 response end 方法 但主视图将无法完成渲染 这是框架的一部分 我们确实需要自己构建它吗 仅使用 re
  • float 无法转换为 'MirrorDisposition' Swift 什么是mirrordisposition?

    我得到以下代码 let floatValue Float 1 let intValue Int 1 if floatValue intValue println Types and value are equal else println
  • 使用 django 实现一个对请求进行计数的计数器

    我只是想和姜戈一起尝试 我如何实现一个计数器来存储数据库上服务的请求计数 我想统计 GET 请求的数量 我该怎么做才能让它工作 我的模板
  • 如何用hadoop实现自连接/叉积?

    对成对的项目进行评估是常见的任务 示例 重复数据删除 协同过滤 相似项目等 这基本上是具有相同数据源的自连接或叉积 要进行自连接 您可以遵循 减少端连接 模式 映射器将连接 外键作为键发出 将记录作为值发出 因此 假设我们想要对以下数据的
  • 可以在 AS3 中保存 XML 文件

    var xml XML
  • VBA 公式内变量

    我有以下代码 ActiveCell FormulaR1C1 COUNTIF R 54 C 14 R 54 C 90 RC 4 我想用变量 total 替换 90 我尝试了这个但没有成功 Dim total as Integer total
  • 找不到程序集

    我将 ArrayList 序列化为二进制文件 以便通过 TCP IP 发送它 序列化文件是由服务器创建的 我希望能够使用我现在正在编写的客户端对其进行反序列化 但是 当客户端尝试反序列化时 它会抛出 SerializationExcepti
  • 如果没有响应则继续发送请求

    在循环中没有得到响应的情况下 如何继续获取网页 for el of NodeList const url el getAttribute href const res await fetch url if no response below
  • html2canvas 不从外部 css 文件获取 css 样式

    我正在使用 html2canvas 将包含 svg 对象 图像和 html 内容的 div 转换为图像 但它不会从外部 css 文件获取 css 样式 我已将这些 css 类 target 和 Circle 放入外部 css 文件中 有人请
  • 如何在 Jetpack Compose 中实现列表的“对齐中心”功能?

    在具有水平 LinearLayout 的 EpoxyRecyclerView 中 有一个 对齐中心 功能 其工作原理如下 如果我以良好的速度滚动列表 它会继续滚动 直到速度减慢并以项目位于中心为止 如果我缓慢滚动并抬起手指 那么下一个项目就
  • 材质UI下一个对话框文本字段下划线颜色

    如何使用辅助调色板颜色更改对话框内文本字段的下划线颜色 我无法做到这一点 因为文档非常混乱 假设您使用的是material ui next 您可以使用覆盖 in 创建Mui主题 import MuiThemeProvider createM
  • Rails 模型中的实例变量

    我想在 Rails 模型中初始化一个实例变量 该变量将保存一个数组 并且我想在模型中的其他方法中访问该变量 我试过这个 class Participant lt ActiveRecord Base possible statuses exi
  • 根据 Python pandas 中索引的补集挑选元素

    我有一个数据框 我从中选择两个子集 dfs df a and df b 例如在iris数据集 df a iris iris Name Iris setosa df b iris iris Name Iris virginica 获得所有元素
  • 有没有一种方法可以透明地对 SQLAlchemy 对象执行验证?

    有没有办法在设置属性之后 或设置属性时 但在提交会话之前对对象执行验证 例如 我有一个领域模型Device有一个mac财产 我想确保mac属性在添加到数据库或在数据库中更新之前包含有效且经过清理的 mac 值 看起来 Pythonic 方法
  • PHP在提交表单失败后保留表单信息

    你好 我正在 mvc 系统视图中构建一个表单 并且我希望保留所有插入的值 以防表单提交失败 如何做到这一点 我尝试过 字段示例
  • 点击鼠标绘制一个矩形

    可以用鼠标点击画一个矩形吗 我的代码到目前为止还不能工作 你能帮助我吗 private void panel1 MouseClick object sender MouseEventArgs e Graphics g this Create
  • 源码分析工具? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 C 和 C 的源代码分析和探索工具似乎非常缺乏 是否有任何工具可以用来收集有关 C 和 或 C 源文件的信息 cscope 完成了我需要的
  • 单元测试持久层 - Symfony

    我想在 Symfony2 中测试持久性 我想知道是否更好地模拟实体并提供给实体管理器 或者是否更好地模拟实体管理器并将实体传递给管理器 我的第一个选择是实体管理器抛出异常 而不是对象不是实体学说 如何在 PHPUNIT 中测试 symfon
  • 使用正则表达式或类似表达式更改 Chrome 中的当前 URL

    当在 Chrome 中输入已弃用的 URL 时 应根据正则表达式或类似表达式将其更改为更新的 URL 我想做以下事情 向系统输入一条规则 将 olddomain com 更改为 newdomain com 在 Chrome 中输入 oldd
  • 当插入符进入 contenteditable div 中的 span 元素时触发事件

    我有一个内容可编辑的 div 其跨度如下 div some span spanned span text div 我想知道是否有任何事件监听器可以附加到span元素本身可用于检测插入符是否在元素内部移动span元素 我并不是在寻找有听众的答