JavaScript: как адаптировать рабочую функцию (IE) для Firefox и / или Chrome
Я использую следующую функцию, чтобы получить выделенный диапазон текста в contenteditable div. Это прекрасно работает в IE, но не в Firefox и Chrome.
Может кто-нибудь сказать мне, как мне нужно настроить это так, чтобы он работал либо в FF и Chrome, или хотя бы в одном из них (кроме IE)? Это бы работало в текущих версиях, чего было бы достаточно. Идея состоит в том, чтобы заменить выделенный текст другой функцией, которая получает здесь "selTxt".
Функция для получения выбора (работает в IE):
function GetSelection()
{
selTxt = '';
if (typeof window.getSelection != "undefined")
{
var sel = window.getSelection();
if (sel.rangeCount)
{
var container = document.createElement('div');
for (var i = 0, len = sel.rangeCount; i < len; ++i)
{
container.appendChild(sel.getRangeAt(i).cloneContents());
}
selTxt = container.innerHTML;
}
}
else if (typeof document.selection != 'undefined')
{
if (document.selection.type == 'Text')
{
selTxt = document.selection.createRange().htmlText;
}
}
return selTxt;
}
Функция, чтобы заменить выбор (это, кажется, проблема):
function EditBold()
{
var newTxt = '';
btnID = 'btnBold';
GetSelection();
if (selTxt.toLowerCase().indexOf('<strong>') == -1)
{
document.selection.createRange().pasteHTML("<strong>" + selTxt + "</strong>");
}
}
Большое спасибо за любую помощь в этом, Тим.
1 ответ
Вы используете переменную selTxt
в EditBold()
функция, но не объявлять ее внутри функции. Если предполагается, что значением является то, что возвращается GetSelection(), используйте следующее:
var selTxt = GetSelection();