我正在尝试模拟(不存在的)更改事件contentEditable
元素(但我猜这对于输入元素来说是同样的问题)。不幸的是,当用户选择一些文本并从浏览器的上下文菜单中选择“删除”时,我不知道如何获取事件。
有什么建议我可以如何得到它吗?
修订后的答案,2012 年 6 月 8 日
你想要的是HTML5 input event。然而,目前这仅适用于 WebKitcontenteditable
元素,但希望也能在其他浏览器中实现:Firefox 14 显然会拥有它. It's 已在所有主要浏览器中实现文本输入和文本区域.
Demo: http://jsfiddle.net/timdown/5e5E5/1/
HTML:
<div id="test" contenteditable="true">...</div>
JS:
var editableDiv = document.getElementById("test");
editableDiv.addEventListener("input", function(evt) {
alert("Editable content changed");
}, false);
对于跨浏览器解决方案,您可以使用一些不同的DOM 突变事件(另见MDN)将被解雇。我建议DOMCharacterDataModified
并且可能DOMNodeRemoved
将是对此目的有用的。
请注意,这些事件在 IE 这些事件已被弃用,有利于DOM4 突变观察者。然而,在撰写本文时(2012 年 6 月),只有最新的 WebKit 浏览器支持此功能,因此在中短期内,我们至少会坚持将突变事件作为后备方案。
editableDiv.addEventListener("DOMCharacterDataModified", function(evt) {
if (evt.newValue.length < evt.prevValue.length) {
alert("Characters deleted");
}
}, false);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)