我正在我的网站上创建文本编辑功能,为此我使用了一个contenteditable容器,其中可以添加额外的div,用于输入需要特殊格式的文本,插入我使用InsertHTML命令的div。然后我使用jQuery添加一个keydown事件,用于更改选项卡的默认行为并输入按钮,此事件似乎只工作一次然后没有响应。
以下是我用来将div插入我的contenteditable容器的代码:
document.execCommand("insertHTML", false, '<div class="code_edit_block" contenteditable tabindex="1">Enter text here</div><br>');
$(".code_edit_block").on("keydown",function(e){
console.log(e.keyCode);
if(e.keyCode===9){
e.preventDefault();
document.execCommand("insertHTML", false, " ");
$(".code_edit_block").focus();
}
else if(e.keyCode===13){
e.preventDefault();
document.execCommand("insertHTML", false, "<br><br>");
$(".code_edit_block").focus();
}
});
使用函数调用此代码,每次单击按钮时,包含此代码的函数称为
可信容器的一般结构:
<div id="tutorial_text_edit_div" class="tutorial_text_div" contenteditable >
user text
<div class="code_edit_block" contenteditable tabindex="1">
inserted formatting div with user content
</div>
more user text
<div class="code_edit_block" contenteditable tabindex="1">
inserted formatting div with user content
</div>
</div>
此代码在firefox上没有问题,但在google chrome上,事件监听器只在它停止工作之前触发一次,有人能告诉我为什么会这样吗?