Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.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 像codepen、codecademy和google docs这样的网站的文本输入是如何工作的?_Javascript_Html_Css - Fatal编程技术网

Javascript 像codepen、codecademy和google docs这样的网站的文本输入是如何工作的?

Javascript 像codepen、codecademy和google docs这样的网站的文本输入是如何工作的?,javascript,html,css,Javascript,Html,Css,它们是可编辑的,但具有自定义高亮显示 他们没有使用textarea。很明显,他们将元素放在了应该放在文本中的地方。是否有这样的指南,可以构建类似的内容,并显示如何确定光标的位置,等等 除了reddit之外,很少有流行站点实际使用默认的HTMLTextArea元素 大多数都有自定义的突出显示和各种各样的事情,它们生成html,让您直接编辑外观,但它是javascript模仿文本区域/文本输入。Codepen似乎在使用CodeMirror:。它是一个免费的开源库,允许显示代码编辑器 一般的想法是,它

它们是可编辑的,但具有自定义高亮显示

他们没有使用textarea。很明显,他们将元素放在了应该放在文本中的地方。是否有这样的指南,可以构建类似的内容,并显示如何确定光标的位置,等等

除了reddit之外,很少有流行站点实际使用默认的HTMLTextArea元素


大多数都有自定义的突出显示和各种各样的事情,它们生成html,让您直接编辑外观,但它是javascript模仿文本区域/文本输入。

Codepen似乎在使用CodeMirror:。它是一个免费的开源库,允许显示代码编辑器

一般的想法是,它们在每次鼠标单击()时检测鼠标位置,以显示/隐藏假光标。一旦光标被放置,他们会检测每一次按键来决定要做什么

使用复杂JavaScript的替代方法是在HTML中使用
contenteditable
属性。这样一个div中的内容可以用CSS设置样式,并且可以用普通的JavaScript进行编辑,这使得它更易于操作。Facebook就是这样输入信息的:


我认为也可以设置textarea的样式,这使得它与ContentEditable非常相似。您可以设置textarea的样式,但其中的内容不容易设置样式
contenteditable
实际编辑页面中的真实HTML代码。Facebook就是这样做的。