function split(element, caretPos) {
// compute the requested position var len = element.textContent.length; var pos = -1;
switch (caretPos) {
case CARET_BEGIN:
pos = 0;
break;
case CARET_MIDDLE:
pos = Math.floor(len / 2);
break;
case CARET_END:
pos = len;
break;
}
// put the caret on the requested position var range = document.createRange(); var sel = window.getSelection();
range.setStart(element.firstChild, pos);
range.setEnd(element.firstChild, pos);
sel.addRange(range);
// simulates a [Return] keypress
synthesizeKey("VK_RETURN", {shiftKey: true});
}
// count the number of non-BR elements in #content
function getBlockCount() {
return document.querySelectorAll("#content *:not(br)").length;
}
// count the number of BRs in element
function checkBR(element) {
return element.querySelectorAll("br").length;
}
function runTests() { var count = getBlockCount(); var nodes = document.querySelectorAll("#content [contenteditable]");
for (var i = 0; i < nodes.length; i++) { var node = nodes[i];
node.focus();
is(checkBR(node), 0, node.textContent.trim() + ": This node should not have any element yet.");
for (var j = 0; j < 3; j++) { // CARET_BEGIN|MIDDLE|END
split(node, j);
ok(checkBR(node) > 0, node.textContent.trim() + " " + j + ": Pressing [Return] should add (at least) one element.");
is(getBlockCount(), count, node.textContent.trim() + " " + j + ": Pressing [Return] should not change the number of non- elements.");
document.execCommand("Undo", false, null);
}
}
SimpleTest.finish();
}
</script>
</pre>
</body>
</html>
¤ Dauer der Verarbeitung: 0.33 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.