Похож на него, не может быть выполнен компактный. Необходимо считать все задания, или сделать SqlReader и просто считать первый.
Если вы вставляете пустой div, p или span, я считаю, что во вновь созданном элементе должно быть «что-то», чтобы захватить диапазон - и чтобы поместить туда курсор.
Вот мой взлом, который, кажется, работает нормально в Chrome. Идея состоит в том, чтобы просто поместить временную строку внутри элемента, а затем удалить ее, когда каретка окажется там.
// Get the selection and range
var idoc = document; // (In my case it's an iframe document)
var sel = idoc.getSelection();
var range = sel.getRangeAt(0);
// Create a node to insert
var p = idoc.createElement("p"); // Could be a div, span or whatever
// Add "something" to the node.
var temp = idoc.createTextNode("anything");
p.appendChild(temp);
// -- or --
//p.innerHTML = "anything";
// Do the magic (what rangy showed above)
range.collapse(false);
range.insertNode( p );
range = range.cloneRange();
range.selectNodeContents(p);
range.collapse(false);
sel.removeAllRanges();
sel.addRange(range);
// Clear the non
p.removeChild(p.firstChild);
// -- or --
//p.innerHTML = "";