Jak zdobyć wszystkie elementy, które są podświetlone

Chcę uzyskać wszystkie elementy w obszarze wyróżnionym przez użytkownika. Problem polega na tym, że nie wiem, jak przejść do różnych części DOM, gdy elementy znajdują się na innej części drzewa. Mój kod do tej pory może tylko usuwać elementy ze startContainer zakresu wyboru. Czy potrzebuję jakiejś rekursji? Oto mój kod:

    getSelectedElementTags:function() 
{
    var range, sel, container;
    sel = content.window.getSelection();
    if (sel.getRangeAt) 
    {
        if (sel.rangeCount > 0) 
        {
            range = sel.getRangeAt(0);              
        }
    } 
    else 
    {       
        range = content.window.createRange();
        range.setStart(sel.anchorNode, sel.anchorOffset);
        range.setEnd(sel.focusNode, sel.focusOffset);
        alert("range created");
    }


    if (range)
    {
        container = range["startContainer"];
        var elms = container.parentNode.getElementsByTagName("*");          
        elmlist = "parent: "+container.parentNode.tagName + " (" + elms.length + ")\n";
        for (i in elms)
        {
            if (elms[i].tagName != null)
            {
                elmlist += elms[i].tagName+"\n";
            }
        }

        alert(elmlist);
    }
},

questionAnswers(1)

yourAnswerToTheQuestion