0

使用以下 XHTML 代码...

<div contenteditable="true">
<img alt="" src="1.png" />
</div>

...如果用户在图像元素(anchorNode 或 focusNode)之后有键盘插入符,我想使用 W3C 标准方法,例如 appendChild 或 insertBefore 来插入新的图像元素。

我尝试了以下方法来确定 DOM 中的位置...

alert(
'focusNode = '+window.getSelection().focusNode
+'\n\npreviousSibling = '+window.getSelection().focusNode.previousSibling
+'\n\nnextSibling = '+window.getSelection().focusNode.nextSibling
+'\n\nparentNode = '+window.getSelection().focusNode.parentNode);

try
{
alert(
'focusNode = '+window.getSelection().focusNode
+'\n\n.previousSibling.previousSibling = '+window.getSelection().focusNode.previousSibling.previousSibling
+'\n\n.nextSibling.nextSibling = '+window.getSelection().focusNode.nextSibling.nextSibling
+'\n\nparentNode = '+window.getSelection().focusNode.parentNode);
} catch (err) {}

alert(
'anchorNode = '+window.getSelection().anchorNode
+'\n\npreviousSibling = '+window.getSelection().anchorNode.previousSibling
+'\n\nnextSibling = '+window.getSelection().anchorNode.nextSibling
+'\n\nparentNode = '+window.getSelection().anchorNode.parentNode);

try
{
alert(
'anchorNode = '+window.getSelection().anchorNode
+'\n\n.previousSibling.previousSibling = '+window.getSelection().anchorNode.previousSibling.previousSibling
+'\n\n.nextSibling.nextSibling = '+window.getSelection().anchorNode.nextSibling.nextSibling
+'\n\nparentNode = '+window.getSelection().anchorNode.parentNode);
} catch (err) {}

我也试过这个,它只是告诉我有多少空白字符(断线)......

alert(window.getSelection().anchorOffset+'\n\n'+window.getSelection().focusOffset);

我无法确定如何直接在键盘插入符号旁边找到图像。


我的目标是仅使用 W3C 方法和属性来做到这一点......

1.) 不使用专有的微软内部---任何方法。

2.) 不使用框架,不仅仅是因为它们使用了内部——任何方法。

3.)我正在尝试确定图像元素是否就在插入符号旁边,如果它是文本,那么这是一个不同的条件(只需提及 {alert('in or next to text');})。

4

1 回答 1

0
var img = document.createElement('img');
img.setAttribute('alt','alternative text');
img.setAttribute('src','2.png');
window.getSelection().getRangeAt(0).insertNode(img);
于 2012-05-11T12:53:33.537 回答