下列功能就會插入光標所在位置的DOM節點(元素或文本節點)中的所有主流桌面瀏覽器:
function insertNodeAtCursor(node) {
var sel, range, html;
if (window.getSelection) {
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
sel.getRangeAt(0).insertNode(node);
}
} else if (document.selection && document.selection.createRange) {
range = document.selection.createRange();
html = (node.nodeType == 3) ? node.data : node.outerHTML;
range.pasteHTML(html);
}
}
如果你寧願將一個HTML字符串:
function insertHtmlAtCursor(html) {
var sel, range, node;
if (window.getSelection) {
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = window.getSelection().getRangeAt(0);
node = range.createContextualFragment(html);
range.insertNode(node);
}
} else if (document.selection && document.selection.createRange) {
document.selection.createRange().pasteHTML(html);
}
}
我已經適應了這個從我的回答類似的問題:How to find cursor position in a contenteditable DIV?
*「可能有一個缺點:這個插件只適用於textarea輸入:文本元素,所以可能會與contenteditable發生衝突。」*您說的沒錯。它根本無法工作。 – 2010-05-30 22:46:52