определить идентификатор / имя фрейма, когда пользователь выбрал текст в этом фрейме - страница имеет несколько фреймов - PullRequest
0 голосов
/ 18 октября 2011

У меня есть сценарий, в котором на одной веб-странице открыто несколько фреймов / фреймов. Теперь пользователь может выбрать какой-либо текст в любом из открытых фреймов / фреймов. Я хочу определить идентификатор / имя iframe, в котором пользователь выделил текст, используя идентификатор / имя iframe, затем я выполню некоторые операции с выделенным текстом.

Как мне это сделать?

1 Ответ

1 голос
/ 18 октября 2011

Получит первый iframe в текущем документе с непустым выбором. Если iframe из другого домена и, следовательно, недоступен для JavaScript, работающего в текущем документе, выбор не может быть получен, а iframe игнорируется.

function getSelectedText(win) {
    var sel;
    if (win.getSelection) {
        return "" + win.getSelection();
    } else if ( (sel = win.document.selection) ) {
        if (sel.type == "Text") {
            return sel.createRange().text;
        }
    }
    return "";
}

function getIframeWithSelection(win) {
    var iframes = win.document.getElementsByTagName("iframe");
    for (var i = 0, len = iframes.length, selectedText; i < len; ++i) {
        try {
            selectedText = getSelectedText(iframes[i].contentWindow);
            if (selectedText != "") {
                // alert just there for debugging
                alert(selectedText);
                return iframes[i];
            }
        } catch (e) {}
    }
    return null;
}

// Example
var iframe = getIframeWithSelection(window);
...