Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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 jQuery开始在标记之间键入_Javascript_Jquery_Wysiwyg - Fatal编程技术网

Javascript jQuery开始在标记之间键入

Javascript jQuery开始在标记之间键入,javascript,jquery,wysiwyg,Javascript,Jquery,Wysiwyg,我正在制作一个WYSIWYG编辑器,我想做的是在enter键上输入preventDefault,当按下enter键时,它会创建一个带有标签的新行。所以本质上每个都是一行。我不知道如何创建并使指针从每个之间开始,如下所示: <div>Line one here</div> // Press enter <div>Start typing next line here</div> // When you press Enter, it creates

我正在制作一个WYSIWYG编辑器,我想做的是在enter键上输入
preventDefault
,当按下enter键时,它会创建一个带有标签的新行
。所以本质上每个
都是一行。我不知道如何创建
并使指针从每个
之间开始,如下所示:

<div>Line one here</div> // Press enter
<div>Start typing next line here</div> // When you press Enter, it creates a div and automatically when you start typing its in between the tags.
此处第一行//按enter键
开始在此处键入下一行//当您按Enter键时,它将创建一个div,并在您开始在标记之间键入其值时自动创建。

然后,在您再次按下新行后,它只会为下一行创建另一个
。。。有人能帮忙吗?我不需要有关
preventDefault
的帮助,只需要在按下Enter键时执行的新操作。

在jQuery中创建一个div:

$('<div/>)
$('))
将其置于当前div之后(“obj”应通过按键中的event.target给出)

$(')。后面插入(obj);
到目前为止,它是独立于浏览器的

要放置指针,可以使用TextRanges。它们使您能够移动指针。有两种不同的实现:

IE:

其他:

从表面上看,这应该不会太难。然而,浏览器的不一致性使其成为问题

基本方法是:

  • 捕获Enter键并防止浏览器默认行为。到目前为止很容易
  • 在大多数浏览器中使用DOM范围或在IE中使用TextRange从浏览器的选择对象获取当前插入符号位置。在IE中有点烦躁
  • 如果插入符号位于当前的
    末尾,则创建一个新的
    ,如果不在,则拆分当前的
    。这不是一件小事(比如说,如果插入符号位于
    中嵌套的内联元素中,那么您需要做些什么),但仍然是可行的
  • 再次使用范围或文本范围,将插入符号放在新的
    的开头。这就是它开始出错的地方:,IE也有它自己的问题,我现在已经忘记了其中的细节

  • 这很难。看看大编辑(TinyMCE、CKEditor)是如何处理这一问题的。

    这在跨浏览器中很难做到。我看一下CKddTor和TyMyCE的源代码,看看它们是如何做的。如果用户在“代码< > /COD>的内容中间按Enter,第一部分就不起作用了。
    $('<div/>).insertAfter(obj);