iframeElm.contentWindow.document.selection не работает для <iframe> в IE, если установить фокус на другие входные данные после выбора в iframe

Это похожий, но другой вопрос о том, как установить html при выборе редактируемого содержимого iframe.

Один из найденных примеров: http://jsfiddle.net/HMRMv/1/, но он также может быть использован для выявления проблемы.

В IE, в примере, если вы выделите текст в iframe, а затем нажмете, он будет работать. Но после выбора текста в редактируемом содержимом iframe, а затем нажатия на другую панель, вы увидите, что подсветка исчезнет, ​​а "щелчок" по кнопке ничего не изменит. Выглядеть как:

var range = document.getElementById("iframe").contentWindow.document.selection.createRange(); 

Невозможно получить предыдущий выбранный диапазон.

Я попытался кешировать диапазон в размытии и повторно использовать его при "щелчке", но он не работает. Это связано с iframe, какие-либо предложения по этому делу?

var selectedType, selectedRange;

function onBlur(e) {
    var selection = iframeElm.contentWindow.document.selection;
    var range = selection.createRange();

    selectedType= selection.type;
    selectedRange = range;
}

1 ответ

blur Событие слишком поздно для кэширования диапазона выбора, потому что к тому времени выбор уже уничтожен. Используйте только IE beforedeactivate событие вместо элемента iframe.

Демо: http://jsfiddle.net/HMRMv/34/

Другие вопросы по тегам