Не работают кнопки в wysiwyg-редакторе
Делал редактор своими руками и столкнулся с тем, что одна функция не очень адекватно работает в IE. Я максимально сократил код, чтобы его можно было протестить в местной песочнице. HTML часть:
<html><head><style> #but { display: block; float:left; margin: 2px; padding: 0px; width:20px; heigh:20px; border: 2px #ccc solid; } #colEdit { display: none; position: absolute; top: 0%; float: right; left: 300px; width: 100px; border: solid 1px black; background: #fff; } #colEdit > div { float: left; margin: 2px; width: 15px; height: 15px; border: solid 2px #ccc; } </style></head><body> <div id="but" class="but" onClick='javascript: coPan("colEdit", 1);' />Col</div> <div id="colEdit" class="colEdit" > <div style='background: #800000;' onclick='setSoC("c","#800000"); coPan("colEdit", 0);' ></div> <div style='background: #ff0000;' onclick='setSoC("c","#ff0000"); coPan("colEdit", 0);' ></div> <div style='background: #ffa500;' onclick='setSoC("c","#ffa500"); coPan("colEdit", 0);' ></div> <div style='background: #ffff00;' onclick='setSoC("c","#ffff00"); coPan("colEdit", 0);' ></div> <div style='background: #00ff00;' onclick='setSoC("c","#00ff00"); coPan("colEdit", 0);' ></div> <div style='background: #00ffff;' onclick='setSoC("c","#00ffff"); coPan("colEdit", 0);' ></div> <div style='background: #0000ff;' onclick='setSoC("c","#0000ff"); coPan("colEdit", 0);' ></div> <div style='background: #000080;' onclick='setSoC("c","#000080"); coPan("colEdit", 0);' ></div> <div style='background: #800080;' onclick='setSoC("c","#800080"); coPan("colEdit", 0);' ></div> <div style='background: #000000;' onclick='setSoC("c","#000000"); coPan("colEdit", 0);' ></div> <div style='background: #696969;' onclick='setSoC("c","#696969"); coPan("colEdit", 0);' ></div></div> <iframe width='300 px' height='300 px' scrolling='auto' frameborder='no' src='#' id='frameId' name='frameId' style="border: 2px #000 solid;" ></iframe>Скриптовая часть: <script> //Тут идет код, отвечающий за работу iframe, стандартный, без особенностей var isGecko = navigator.userAgent.toLowerCase().indexOf("gecko") != -1; var iframe = (isGecko) ? document.getElementById("frameId") : frames["frameId"]; var iWin = (isGecko) ? iframe.contentWindow : iframe.window; var iDoc = (isGecko) ? iframe.contentDocument : iframe.document; iHTML = "<html><head></head><body style='background-color: #fff;'></body></html>"; iDoc.open(); iDoc.write(iHTML); iDoc.close(); iDoc.designMode = "on"; //Далее идут придуманные мною функции: function coPan(n_panel,todo){ //Функция отвечает за закрытие\открытие разных div var n_pan = document.getElementById(n_panel).style; if(todo == 1){ if(n_pan.display == 'block'){ n_pan.display = 'none'; } else { n_pan.display = 'block'; } } else { n_pan.display = 'none'; } } function setSoC(soc, socval) { //Функция отвечает за изменение цвета (и размера) шрифта iWin.focus(); switch(soc){ case("s"): socreq = "fontsize"; break; case("c"): socreq = "forecolor"; break; //Не обращайте внимания - это для функции изменения размера шрифта :) default: alert ("Ошибка!");} iWin.document.execCommand(socreq, null, socval); } </script></body></html> Div but - это кнопка вызова панели выбора цвета. Div colEdit - это панель выбора цвета, содержит в себе div-кнопки, при нажатии которых должен меняться выделенный текст. В скрипте есть комментарии. Проблема заключается в том, что при выделении в IE текста и последующей попытке сменить его цвет нифига не происходит. Но, кстати, если в IE просто выбрать цвет, то после курсора нормально печатается выбранным цветом. Проблема только со сменой цвета выделенного текста. Помогите мне пожалуйста! Заранее спасибо :) |
А где вы вообще проверяете, что, что-то выделено?)
|
Your, не очень понимаю ваш вопрос. Вы думаете, что iWin.focus() недостаточно для того, чтоб браузер понял какой текст выделен? Или что? Я просто не очень понимаю, что Вы имеете в виду... :(
|
Часовой пояс GMT +3, время: 08:29. |