2
我想在插入a
節點後插入空格,問題是我插入的空間是在a
節點內,而不是在a
節點之後。如何在插入節點後插入空格
我有其他的解決方案,它插入一個span
並把一個空間放入span
節點,但我認爲它應該有一個更好的解決方案。
var $preload = $('<a href="url">test.txt</a>');
editor.insertNodeAtCaret($preload.get(0));
insertTextAtCursor('\u00A0', true);
function insertNodeAtCaret(node) {
if (typeof window.getSelection != "undefined") {
var sel = window.getSelection();
if (sel.rangeCount) {
var range = sel.getRangeAt(0);
range.collapse(false);
range.insertNode(node);
range = range.cloneRange();
range.selectNodeContents(node);
range.collapse(false);
sel.removeAllRanges();
sel.addRange(range);
}
} else if (typeof document.selection != "undefined" && document.selection.type != "Control") {
var html = (node.nodeType == 1) ? node.outerHTML : node.data;
var id = "marker_" + ("" + Math.random()).slice(2);
html += '<span id="' + id + '"></span>';
var textRange = document.selection.createRange();
textRange.collapse(false);
textRange.pasteHTML(html);
var markerSpan = document.getElementById(id);
textRange.moveToElementText(markerSpan);
textRange.select();
markerSpan.parentNode.removeChild(markerSpan);
}
};
function insertTextAtCursor(text, moveTheCursor) {
var sel, range, html;
if (window.getSelection) {
sel = window.getSelection();
if (sel.getRangeAt && sel.rangeCount) {
range = sel.getRangeAt(0);
range.deleteContents();
var textNode = document.createTextNode(text);
range.insertNode(textNode);
if(moveTheCursor){
range.setStartAfter(textNode);
sel.removeAllRanges();
sel.addRange(range);
}
}
} else if (document.selection && document.selection.createRange) {
document.selection.createRange().text = text;
}
};