【发布时间】:2012-05-26 07:33:44
【问题描述】:
我正在使用很棒的Rangy library。而且我还使用 Tim Down 的函数将 HTML 节点插入 contenteditable DIV:
function insertNodeAtCaret(node) {
var sel = rangy.getSelection();
if (sel.rangeCount) {
var range = sel.getRangeAt(0);
range.collapse(false);
range.insertNode(node);
range.collapseAfter(node);
sel.setSingleRange(range);
}
}
现在,这在 Chrome 中可以正常工作并且符合预期。然而在 FF 和 Opera 中存在不同的行为。在 Chrome 中,HTML 节点插入到 contenteditable 中,插入符号保留在此 HTML 节点中,因此当用户继续输入时,他所有的输入都在插入的 HTML 节点中。
在 Opera 和 Firefox 中,插入符号位于插入的 HTML 节点之外,当用户继续输入时,输入的字符不在 HTML 节点内。
我的代码需要“Chrome 方式”的工作方式。你能帮我在 FF 和 Opera 中实现同样的行为吗?
用于测试的工作 jsFiddle 在这里:http://jsfiddle.net/Er5DH/2/(当您在 contenteditable 中按“x”键时,它会插入红色的 SPAN 元素。在 Chrome 中,当您继续输入字符时,如预期的那样,字符是红色的。但在 FF 和Opera,“x”键后的下一个输入字母是黑色的 - 不需要)
感谢任何帮助和提示。
【问题讨论】:
标签: javascript html cross-browser rangy