1

我有一个可内容编辑的 div 标签,以便用户可以输入 div。有一个功能可以在用户按下按钮时将链接添加到 div 中。我希望插入符号位于链接之后,以便用户可以继续输入。链接可以多次插入。

示例代码:

<div id="mydiv" contenteditable="true" tabindex="-1">before <a href="#">link</a> after</div>

我需要此代码才能工作:IE、Firefox、Opera、Safari 和 Chrome。

任何人都可以提供任何帮助吗?

4

2 回答 2

0

我查看了 CKEditor (http://ckeditor.com/) 代码,发现它有一个 appendBogus() 函数,并插入了一个额外的 <br><span> </span></br> 然后被删除.

问题当然是 Gecko/IE 浏览器也有关于 <br> 标签如何工作的细微差别(即是否使用 \r 或 \n 插入范围与添加 <br> 元素)

您可以通读 _source/plugins/enterkey/plugin.js 以了解处理 IE 和 Gecko 的不同细微差别。这似乎是一个大黑客......

于 2010-12-17T23:33:57.897 回答
0

假设您引用了<a>您在名为 的变量中插入的元素link

function setCaretAfter(el) {
    var sel, range;
    if (window.getSelection && document.createRange) {
        range = document.createRange();
        range.setStartAfter(el);
        range.collapse(true);
        sel = window.getSelection(); 
        sel.removeAllRanges();
        sel.addRange(range);
    } else if (document.body.createTextRange) {
        range = document.body.createTextRange();
        range.moveToElementText(el);
        range.collapse(false);
        range.select();
    }
}

setCaretAfter(link);
于 2010-08-31T23:33:32.907 回答