| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > wysiwyg с методом execCommand/Сохранение |
| Автор: Lely 22.7.2010, 09:37 | ||||||||
| Всем доброго времени суток... Тут такая проблема... Пишу wysiwyg с методом execCommand...Изменение размера шрифта, его начертания и цвета делается так
А мне надо чтобы это происходило вот так
Я написала функцию обработки содержимого iframe при сохранении...которая выглядит так...
все работает как надо в IE...а в Opera и Mozilla не раюотает вообще... я думаю что им этот код не нравится уже со второй строчки...но как под них ее исправить не знаю... подскажите пожалуйста на всякий случай еще вот
все остальное в редакторе работает во всех браузерах...из чего делаю вывод что переменную iframe они все воспринимают нормально... |
| Автор: EmilRegis 22.7.2010, 09:45 |
| так вы гляньте в консоль ошибок..что там написано |
| Автор: Amphiluke 22.7.2010, 12:09 | ||
Вот такая вот альтернатива… Выглядит страшновато, потому что пришлось учитывать особенности каждого браузера. Например, FF задает атрибуты style в тегах font, и их приходится переносить на span. А IE не задает атрибуты style. А Opera вообще вкладывает теги font друг в друга, поэтому необходимо выполнять фунукцию рекурсивно.
|
| Автор: Lely 22.7.2010, 20:57 | ||
| Amphiluke, спасибо вам большое. Вы опять меня выручаете... вот только функция действительно очень гениальная и очень страшная...ну в хорошем смысле)))...она у меня раотает во всех браузерах...но она почему-то если задан размер шрифта переделывает его из <font size="5">Text</font> в <span size="5">Text</span> а по идее должно быть так <span style="font-size: large">Text</span> вот и самое главное мне бы так хотелось всетки понять что я в своей не так сделала...ведь я там тоже пробовала пользоваться getElementsByTagName и все равно ничего не получалось в Опере с Мозилой.... я просто хочу понять где ошибаюсь...чтобы лишний раз вас не доставать своими проблемами Добавлено через 13 минут и 29 секунд Я вот тут вношу изменения....
и нашлась проблема в последней строчке когда я удаляю атрибуты тега ФОНТ чтобы потом его просто заменить на СПАН в содержимом АЙФРЕЙМА как в строке...ИЕ принимает это... а в Опере с Мозилой надо наверно как-то по другому писать? |
| Автор: Lely 22.7.2010, 21:28 | ||
все... у меня получилось
вместо clearAttributes надо было три раза написать removeAttribute с разными параметрами спасибо вам еще раз, Amphiluke |
| Автор: Lely 22.7.2010, 21:33 | ||||||
я еще раз решила посмотреть вашу функцию...вдруг она сливает друг за другом идущие спаны в один...оказалось нет =(...и она мне выдала после оперы вот такой результат
значит она еще и с именем шрифта неправильно иногда работает... Добавлено через 1 минуту и 33 секунды
странно...а у меня вот шалит =(( Добавлено через 5 минут и 19 секунд
нет он его не очишает...но этого мне как раз и не надо...задумка была взять проитись по тегам в айфрейме прочитать все их атрибуты и записать в их же стили...потом все атрибуты удалить....и последним штрихом взять перед сохранением уже все как текст и просто поменять все фонт на спан... я сначала тоже думала сделать как вы....потом решила что просто заменить будет проше |
| Автор: Amphiluke 22.7.2010, 21:41 |
| Lely, ну не знаю. Вообще говоря, ваш код у меня почему-то совсем не работает ни в FF, ни в Opera. P.S. А почему функция должна сливать span'ы? |
| Автор: Lely 22.7.2010, 21:42 | ||||||
| с вкладыванием всего в один спан заморачиваться не буду...я думаю не так уж это страшно с точки зрения html, да? Добавлено через 5 минут и 12 секунд
ну так бы было красивей наверно....менее избыточно, нет?
а в ИЕ работает?...там же совсем не весь код...всмысле до и после этого там же тоже всего куча понаписана...эт просто кусочек
да конечно...это первым делом проверю |
| Автор: Amphiluke 22.7.2010, 22:31 | ||
Ну да, в принципе.
Ну, я этот кусочек испытывал на вашем же коде из http://forum.vingrad.ru/forum/topic-305444.html темы. Но да, конечно, вполне возможно, что у меня не работает из-за того, что остальной код не совпадает с тем, который испытываете вы. |