Прямо море ответов... Ну да ладно, ответ сам нашёл и как обычно, ларчик просто открывался. На самом деле, недоработка заключалась в том, что перед тем как получать текущую позицию курсора, нужно проверить, возможно пользователь выделил какой то объект. А отловить это можно перед определением range через getSelection().anchorNode + getSelection().anchorOffset:
var buffer=obj.contentWindow.getSelection();
//Если выделен какой то объект...
if(buffer.anchorNode.childNodes[buffer.anchorOffset]){
//...сохраняем его в хранилище
jsCore.storage.parentObject=buffer.anchorNode.childNodes[buffer.anchorOffset];
}
//Сохраняем объект range
range=buffer.getRangeAt(0);
/*** ну и далее по коду с минимальными изменениями ***/
Собственно в хранилище объект попадёт только тогда, когда курсор "попал" непосредственно на объект. Методом перемещения курсора можно получить <br/>, а <input>, <img> - методом клика по ним.