нужно копать в сторону обработчика onselectstart
ведь тычёк мышкой или перемещение текстового курсора это выбор текста с нулевоё длиной
P.S. jsfiddle.net/a3b8j2qx
если объект совсем неопределённой структуры, можно использовать рекурсию, такой подход часто применялся для печати значений и функций стандартных объектов JavaScript. Например geekswithblogs.net/svanvliet/archive/2006/03/23/si...