在 'delete' 个关键事件上执行 'document.execCommand' - AngularJS

Performing 'document.execCommand' on 'delete' keyevents - AngularJS

我创建了 this demo plunkr 来重现这个问题。

我想在执行删除操作时应用 strikeThrough 命令。例如:

如果用户选择 "Text" 并按 deletebackspace ,它应该变成 Test。它不应该被删除。 有人可以帮我吗

$container.bind('keydown keyup', function (e) {
    console.log(e)
    if(e.keyCode===8 || e.keyCode===46){
        $document[0].execCommand('strikeThrough', false); // line 1
        e.preventDefault();  // line 2
    }
});

我可以捕获如下事件,但 line 1line 2 不能一起工作。那么如何停止 delete 事件并应用 execCommand 呢?

您确实绑定了 "twice"。

不是"don't work",是"work twice"。

修正代码如下:

$container.bind('keyup', function (e) {
    console.log(e)
    if(e.keyCode===8 || e.keyCode===46){
        $document[0].execCommand('strikeThrough', false); // line 1
        e.preventDefault();  // line 2
    }
});
$container.bind('keydown', function (e) {
    console.log(e)
    if(e.keyCode===8 || e.keyCode===46){
        e.preventDefault();  // line 2
    }
});