选择更改事件在可满足的
selection change event in contenteditable
我的contentitable元素的标记如下:
<iframe class="rich_text">
<html style="background:none transparent;">
<head></head>
<body contenteditable="true"></body>
</html>
</iframe>
正文是否有选择更改事件(可满足的)?这样我就可以检测所选文本块是否有加粗/下划线等
我已经尝试了一些事件处理程序(jQuery),但没有成功:
var richText = $(".rich_text"),
richTextDoc = richText.contents()[0],
richTextBody = richText.contents().find("body");
// Enable Design mode.
richTextDoc.open();
richTextDoc.write("");
richTextDoc.close();
richTextDoc.designMode = "on";
// Binds selection change event
$(richTextDoc).bind("select", function() { ... });
$(richTextDoc).bind("selectstart", function() { ... });
richTextBody .bind("select", function() { ... });
richTextBody .bind("selectstart", function() { ... });
更新2017 +
现在有一个跨浏览器的方式。最近的WebKit/Blink浏览器(Chrome, Safari, Opera)支持selectionchange, Firefox从43版开始支持。
老回答没有跨浏览器的方式来检测选择的变化。IE和最近的WebKit浏览器(例如Chrome和Safari)支持文档上的selectionchange
事件。Firefox和Opera没有这样的事件,你所能做的就是检测通过键盘和鼠标事件所做的选择更改,这是不令人满意的(没有办法检测"全选"
假设您的iframe的内容来自同一域,您可以使用:
$('.rich_text').contents()
.find('body')
.bind('selectstart', function(){});
从这里可以看到,当元素被选中时,selectstart事件被正确触发。
对于firefox, https://developer.mozilla.org/zh-CN/docs/XPCOM_Interface_Reference/NsIEditor提供了OBSERVER编辑器。假设需要基于xpcom的"特权"。火狐浏览器上除了鼠标之外的其他选项&kbd-tracking:
关于'focus'和'blur' -所有/有关节点/元素的事件(文本?)比较focus-event状态和blur-event状态的节点内容(= leave,如果window-close或类似),并设置YOUR,或'_moz_dirty', dirty-attribute(s)。
- jQuery 可排序事件触发器
- 未能执行'waitUntil'在'可扩展事件'
- Jquery可拖动&可丢弃事件委派:stop&滴
- 如何在jquery可丢弃事件中执行某些操作
- jQuery UI 可排序:事件的顺序
- 剑道 AngularJS中的可排序事件,如何捕获
- Ember.View 内容可编辑事件
- 未在 Angular2 模板中呈现的可观察事件
- process.stdin流的可读事件和数据事件有什么区别
- 使用谷歌分析功能的可区分事件跟踪
- 使用.destrict()可删除事件
- 如何使jssor幻灯片的出现成为可触发事件
- 如何为文档可满足内容的元素设置类属性
- 选择更改事件在可满足的
- 当放置在行尾时,将插入符号放置在可满足的锚中
- 断点和可满足的奇怪行为
- Jquery可满足所有单元格而不是行
- 选择最后一个单词或“可满足内容”的特定范围
- Javascript:同步可观察事件
- Internet Explorer可满足的图像点击事件每隔一秒触发一次