jQuery - contenteditable - 确定插入符是在图像之前还是之后
jQuery - contenteditable - Determine if caret before or after an image
我必须调试供应商 api(Redactor 所见即所得)并且有一个问题,是否可以确定插入符号是在图像之前还是之后?
插入图像后会生成此标记:
<figure>
<img src='/ur/face.png' />
<figcaption>Ur face</figcaption>
</figure>
我正在尝试这样做,如果插入符号在图像之前,并且用户按下回车键,则图像(整个图形块)会向下移动,以便用户可以在图像上方添加信息,如果插入符号是在图像之后,插入符号会跳过图形说明(整个图形块)并在图像之后创建一个新段落,以便用户可以在图像之后添加内容。
现在,如果插入符号在图像之前,"p" 块插入到 "figure" 中,如果插入符号在图像之后,则 "p" 块插入图像之后,但之前"figcaption",这会导致火车失事,尤其是在移动设备上。
------更新------
如果您遇到同样的问题,此补丁将有效 (v2.1.2.2):
onEnter: function(e)
{
....
//-----
// !!!!! HACK !!!!!
//-----
/*
// figure
else if (this.keydown.figure)
{
setTimeout($.proxy(function()
{
this.keydown.replaceToParagraph('FIGURE');
}, this), 1);
}
*/
else if (this.keydown.figure)
{
var node = $(this.opts.emptyHtml);
// If after image (1), then we will insert after image
if (1 === document.getSelection().anchorOffset) {
$(this.keydown.figure).after(node);
}
// If before image (0), lets insert before image so users can move images down
else {
$(this.keydown.figure).before(node);
}
this.caret.start(node);
return false;
}
//-----
可以使用document.getSelection().anchorOffset
吗?
在使用 Redactor demo 进行测试时,如果克拉在图像之前,则该值为 0
,如果在图像之后,则该值为 1
(假设克拉在 <image>
标签在这两种情况下)。
我必须调试供应商 api(Redactor 所见即所得)并且有一个问题,是否可以确定插入符号是在图像之前还是之后?
插入图像后会生成此标记:
<figure>
<img src='/ur/face.png' />
<figcaption>Ur face</figcaption>
</figure>
我正在尝试这样做,如果插入符号在图像之前,并且用户按下回车键,则图像(整个图形块)会向下移动,以便用户可以在图像上方添加信息,如果插入符号是在图像之后,插入符号会跳过图形说明(整个图形块)并在图像之后创建一个新段落,以便用户可以在图像之后添加内容。
现在,如果插入符号在图像之前,"p" 块插入到 "figure" 中,如果插入符号在图像之后,则 "p" 块插入图像之后,但之前"figcaption",这会导致火车失事,尤其是在移动设备上。
------更新------
如果您遇到同样的问题,此补丁将有效 (v2.1.2.2):
onEnter: function(e)
{
....
//-----
// !!!!! HACK !!!!!
//-----
/*
// figure
else if (this.keydown.figure)
{
setTimeout($.proxy(function()
{
this.keydown.replaceToParagraph('FIGURE');
}, this), 1);
}
*/
else if (this.keydown.figure)
{
var node = $(this.opts.emptyHtml);
// If after image (1), then we will insert after image
if (1 === document.getSelection().anchorOffset) {
$(this.keydown.figure).after(node);
}
// If before image (0), lets insert before image so users can move images down
else {
$(this.keydown.figure).before(node);
}
this.caret.start(node);
return false;
}
//-----
可以使用document.getSelection().anchorOffset
吗?
在使用 Redactor demo 进行测试时,如果克拉在图像之前,则该值为 0
,如果在图像之后,则该值为 1
(假设克拉在 <image>
标签在这两种情况下)。