var sel = document.getSelection(); var flush = true; var dry = true; var run = ""; var empty_range; var empty_first_text_range; var empty_last_text_range; var full_range;
function check(range, expected, test)
{
is(""+range, expected, test);
is(""+empty_range, "", "empty range test after: "+test);
is(""+empty_first_text_range, "", "empty first text range test after: "+test);
if (empty_last_text_range) is(""+empty_last_text_range, "", "empty last text range test after: "+test);
is(""+full_range, full_range.startContainer.textContent, "full range test after: "+test);
}
function newDiv()
{ vardiv = document.createElement('div');
for (var i = 0; i < arguments.length; ++i) { div.appendChild(document.createTextNode(arguments[i]));
}
document.body.appendChild(div)
empty_range = document.createRange();
empty_range.setStart(div,0);
empty_range.setEnd(div,0); var firstTextNode = div.childNodes[0]; var lastTextNode = div.childNodes[div.childNodes.length - 1];
empty_first_text_range = document.createRange();
empty_first_text_range.setStart(firstTextNode,0);
empty_first_text_range.setEnd(firstTextNode,0);
empty_last_text_range = null;
if (firstTextNode != lastTextNode) {
empty_last_text_range = document.createRange();
empty_last_text_range.setStart(lastTextNode,0);
empty_last_text_range.setEnd(lastTextNode,0);
}
full_range = document.createRange();
full_range.setStart(div,0);
full_range.setEnd(div,div.childNodes.length);
return div;
}
function selEnd(div,child,index,split,s)
{ var start = div.childNodes[child]; var r = document.createRange();
sel.addRange(r);
r.setStart(start, index);
r.setEnd(div, div.childNodes.length);
if (!dry) start.splitText(split);
check(r,s,run+" selEnd "+child+","+index+","+split);
}
function selStart(div,child,index,split,s)
{
if (flush) document.body.getClientRects(); var start = div.childNodes[child]; var r = document.createRange();
sel.addRange(r);
r.setStart(div, 0);
r.setEnd(start, index);
if (!dry) start.splitText(split);
check(r,s,run+" selStart "+child+","+index+","+split);
}
function selMiddleStart(div,child,index,split,s)
{
if (flush) document.body.getClientRects(); var start = div.childNodes[child]; var r = document.createRange();
sel.addRange(r);
r.setStart(div, 1);
r.setEnd(start, index);
if (!dry) start.splitText(split);
check(r,s,run+" selMiddleStart "+child+","+index+","+split);
}
function selMiddleEnd(div,child,index,split,s)
{
if (flush) document.body.getClientRects(); var start = div.childNodes[child]; var r = document.createRange();
sel.addRange(r);
r.setStart(start, index);
r.setEnd(div, 2);
if (!dry) start.splitText(split);
check(r,s,run+" selMiddleEnd "+child+","+index+","+split);
}
function splitBefore(div,child,index,split,s)
{
if (flush) document.body.getClientRects(); var start = div.childNodes[child]; var r = document.createRange();
sel.addRange(r);
r.setStart(div, 1);
r.setEnd(start, index);
if (!dry) div.childNodes[0].splitText(split);
check(r,s,run+" splitBefore "+child+","+index+","+split);
}
function boom()
{
runTests("dry run"); // this is to verify the result strings without splitText()
dry = false;
flush = false;
runTests("no flush");
flush = true;
runTests("flush");
}
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 und die Messung sind noch experimentell.