Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取已编辑元素的删除事件_Javascript_Javascript Events - Fatal编程技术网

Javascript 获取已编辑元素的删除事件

Javascript 获取已编辑元素的删除事件,javascript,javascript-events,Javascript,Javascript Events,我试图为contentEditable元素模拟(不存在的)更改事件(但我想对于输入元素也是同样的问题)。不幸的是,当用户选择一些文本并从浏览器的上下文菜单中选择“删除”时,我不知道如何获取事件 有什么建议吗?修订答案,2012年6月8日 你想要的是这个。然而,这目前只在WebKit中适用于contenteditable元素,但希望也能在其他浏览器中实现:。是的 演示: HTML: 对于跨浏览器解决方案,您可以使用一些将被激发的各种解决方案(另请参见)。我建议DOMCharacterDataMod

我试图为contentEditable元素模拟(不存在的)更改事件(但我想对于输入元素也是同样的问题)。不幸的是,当用户选择一些文本并从浏览器的上下文菜单中选择“删除”时,我不知道如何获取事件


有什么建议吗?

修订答案,2012年6月8日

你想要的是这个。然而,这目前只在WebKit中适用于
contenteditable
元素,但希望也能在其他浏览器中实现:。是的

演示:

HTML:

对于跨浏览器解决方案,您可以使用一些将被激发的各种解决方案(另请参见)。我建议
DOMCharacterDataModified
DOMNodeRemoved
将是用于此目的的有用工具


请注意,IE@EliranMalka中不存在这些事件:我一直在关注突变观察员规范。然而,当我写下这个答案时,它还没有取得任何进展,DOM变异事件仍然是中短期内唯一可行的选择,因为只有最近的WebKit和Firefox支持新的变异观察员。我已经更新了我的答案以反映这一点。是的,也许添加免责声明的更新是一个不错的选择。这是一个很好的答案(因此我投了赞成票),因为这似乎是目前解决这个问题的唯一方法。我正在寻找一个更好的解决方案,希望找到一个足够强大和广泛支持的解决方案。(此通信源自一条删除的注释,请求避免使用DOM突变事件)。@EliranMalka:我认为没有更好的替代方案,尽管WebKit支持
contenteditable
元素上的
input
事件。不过,没有别的办法。请看@EliranMalka:感谢您提醒我注意这一点,并为我最初的防御语气感到抱歉。顺便说一句,
input
事件正是我想要的(OP中有
contenteditable
),所以我真的做到了。你们的承诺和乐于帮助(以及深入的研究)提醒了我stackoverflow的意义。谢谢。
<div id="test" contenteditable="true">...</div>
var editableDiv = document.getElementById("test");

editableDiv.addEventListener("input", function(evt) {
    alert("Editable content changed");
}, false);
editableDiv.addEventListener("DOMCharacterDataModified", function(evt) {
    if (evt.newValue.length < evt.prevValue.length) {
        alert("Characters deleted");
    }
}, false);