Визуальный редактор, нужна консультация

12
Дмитрий
На сайте с 23.08.2006
Offline
199
#11

С этим разобрался, если кому интересно:

  var elem_for_del = document.getElementById(id);

elem_for_del.parentNode.removeChild(elem_for_del);

Кто подскажет, у меня следующая проблема. Например на странице есть div id="testdiv"

function remove_block(id) {

alert(id); // выдает 'testdiv';
elem_for_del = document.getElementById('testdiv'); // так работает
// elem_for_del = document.getElementById(id); // а так нет
document.body.removeChild(elem_for_del);
}

В яваскрипте делаю remove_block('testdiv');

В текущем вариантене работает, если расскомментировать строку - нет. Причем алерт говорит что id='tesdiv'.. document.getElementById() - туда нельзя переменные сувать?

Разрабатываю и автоматизирую на php http://jonnyb.ru/
Kolyaj
На сайте с 28.03.2006
Offline
69
#12

Скорее всего id конфликтует с какой-нибудь встроенной переменной. Вам бы фрэймворк какой использовать, типа Prototype.js, намного все упростится. По вашему примеру:


function $(element, parent) {
return typeof element == 'string' ? (parent || document).getElementById(element) : element;
}

function remove(element) {
element = $(element);
element.parentNode && element.parentNode.removeChild(element);
}
Дмитрий
На сайте с 23.08.2006
Offline
199
#13
Скорее всего id конфликтует с какой-нибудь встроенной переменной.

Вроде нет, с другими переменными то же самое. Решил таймаутом (незнаю почему сработало, вроде id алертился, значит элемент уже был на странице):

window.setTimeout(function (){var elem_for_del = document.getElementById(id); elem_for_del.parentNode.removeChild(elem_for_del);}, 500);
Вам бы фрэймворк какой использовать, типа Prototype.js, намного все упростится. По вашему примеру:

За эту вещицу большое спасибо, в визуальном рдакторе наверное использовать не стану, а для отладки самое то

Дмитрий
На сайте с 23.08.2006
Offline
199
#14

Если у фрейма designMode = 'On', то все теги переводятся в заглавные буквы, что не валидно xhtml 1.1. Кто как это поборол?

Kolyaj
На сайте с 28.03.2006
Offline
69
#15

Что-то мне подсказывает, что в любом случае исходник будет не XHTML, т.к. браузеры (по крайней мере FF) все равно преобразуют его в нормальный HTML. В частности если взять любую валидную страничку и посмотреть генерируемый код (не исходный), то все закрывающие слэши у одиночных тегов (img, meta, link) будут удалены.

Дмитрий
На сайте с 23.08.2006
Offline
199
#16

Хочу это дело исправлять. Содержимое iframe у меня дублируется в textarea. В textarea я могу делать с текстом уже что угодно и браузр не будет там косячить. Что нужно сделать:

<TUTMNOGOBUKAF> заменить на <tutmnogobukaf>

</TUTMNOGOBUKAF> на </tutmnogobukaf>

<BR>,<BR/> и <BR /> на <br />

<IMG SRC=".." ALT="..">, <IMG SRC=".." ALT=".." /> на <img src=".." alt=".." />

<TBODY>,</TBODY> удалить

По-моему смог все упомянуть. Впринципе можно что-то типа этого:

function fix_html(html) {

v=new RegExp('<TABLE>',"g");
html=html.replace(v,'<table>');
v=new RegExp('<BR/>',"g");
html=html.replace(v,'<br />');
}

Но это криво, да и img таким способом не профиксишь.

Kolyaj
На сайте с 28.03.2006
Offline
69
#17

У строк есть метод toLowerCase.

Дмитрий
На сайте с 23.08.2006
Offline
199
#18

Мне нужно только теги в нижний регистр, а toLowerCase преобразует всю строку

Дмитрий
На сайте с 23.08.2006
Offline
199
#19

Ладно, с заглавными буквами повременю, нада рег выражения подучить.

Вопрос про форматирование с помощью execCommand, вот пример:

<iframe id="test" src=""></iframe><br />

<a href="javascript:alert(frames['test'].document.designMode='On')">to Visual</a>
<a href="javascript:alert(document.getElementById('t1_').contentWindow.document.execCommand('formatblock', false, '<b>'))">ФОРМАТИТЬ</a>

to Visual -> пишем текст, выделяем часть, жмем ФОРМАТИТЬ. Должен стать жирным. У меня возвращается true, но текст без изменений?

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий