Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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/0/unity3d/4.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 为什么textarea的contenteditable值为true don';t寄存器键控事件_Javascript_Html - Fatal编程技术网

Javascript 为什么textarea的contenteditable值为true don';t寄存器键控事件

Javascript 为什么textarea的contenteditable值为true don';t寄存器键控事件,javascript,html,Javascript,Html,这让我很困惑。 如下面的代码所示,当您在div中按“ctrl+b”时,字体的粗体将变为粗体,而在textarea中则不会出现这种情况。 这个问题是根据马库斯·埃克沃尔在回答问题时的评论提出的。但是我不能添加评论,所以我在这里问。 div,textarea{ 宽度:100px; 高度:100px; 边框:1px实心; 填充物:5px; } 文本区{ 调整大小:无; } 文本区域中的无法工作,因为它不支持HTML标记 运行document.execCommand(“bold”)时,在选定文本中添加

这让我很困惑。
如下面的代码所示,当您在div中按“ctrl+b”时,字体的粗体将变为粗体,而在textarea中则不会出现这种情况。
这个问题是根据马库斯·埃克沃尔在回答问题时的评论提出的。但是我不能添加评论,所以我在这里问。
div,textarea{
宽度:100px;
高度:100px;
边框:1px实心;
填充物:5px;
}
文本区{
调整大小:无;
}

文本区域中的无法工作,因为它不支持HTML标记 运行document.execCommand(“bold”)时,在选定文本中添加
fds

这里是一个使用jQuery(更新)的示例

$(“#编辑器”)。按键(“c”,函数(e){
如果(e.ctrlKey){
document.execCommand('bold',false,null);
}
})
#编辑器{
宽度:200px;
高度:200px;
边框:1px实心;
填充物:5px;
调整大小:无;
边框:1px纯黑;
单词包装:打断单词;
}


该行为只是特定于浏览器。不同的浏览器有不同的行为。感谢adeneo的提及:在文本区域中,除了纯文本之外,不能添加任何内容。

在文本区域中,
contenteditable
的意义是什么,你仍然不能添加纯文本之外的任何内容在浏览器中按ctrl+b,它使用默认功能,例如,在firefox中,它调用
书签
工具栏。要做到这一点,您需要使用javascript捕捉按键事件。contexteditable在技术上支持所有元素,但这并不意味着它实际上适用于所有元素画布是对另一个不适用于contexteditable的元素的良好描述。另一个问题是系统的优先级,这意味着当按下一个键时,它首先进入计算机上的操作系统,然后进入浏览器,然后进入您的网页。因此,如果Mozilla Firefox拦截ctrl b,除非Firefox允许您以某种方式禁用它,否则您无法捕获它,因为它永远不会到达您的网页page.Contexteditable允许您编辑元素内的文本,包括html,但是textarea元素不支持html标记,因此添加上下文可编辑属性没有任何好处,它仍然只能处理基本文本是的,它是特定于浏览器的,抱歉,没有任何东西可以修复它。祝你好运。谢谢你的例子。但是
.blod
将对textare中的所有文本生效,而不仅仅是在我按下
ctrl+b
后的文本。