Проблема вставки ссылок при копировании из MSWORD
Доброго времени суток всем!
Бьюсь уже 3-и сутки. Суть проблемы в следующем: Нужен нормальный WYSIWIG редактор на jQuery. Перебрал десяток редакторов, но во всех одна и та-же проблема. Есть документ MSWORD с оглавлением (ссылки на якоря и якоря в тексте (anchor)). Когда я копирую из него текст и вставляю его в редактор то в коде вместо простой сслыки на якорь появляется полная ссылка странички на которой находиться редактор и ссылка на якорь. Получается вот так: <p> <a href="http://мой домен/admin/admin.php?path=2&add=1#_Toc324669847"><span style="font-family:Times New Roman;font-size:16px;">Статья 6<span style="color:windowtext;">. </span><span style="color:windowtext;">6</span></span></a> </p> А должно быть вот так: <p> <a href="#_Toc324669847"><span style="font-family:Times New Roman;font-size:16px;">Статья 6<span style="color:windowtext;">. </span><span style="color:windowtext;">6</span></span></a> </p> Не знаю ошибка это или нет. Но у всех редакторов на jQuery такая проблема. Исключением из всех является SPAW Editor. (но он написан на PHP). Пробовал разные версии jQuery от 1.3.3 до 1.7.2 Пробовал сам в jQuery поискать это место, но в Java я очень слабо разбираюсь, поэтому прошу помощи у Вас! |
Это не зависит от версии JQuery.
Может просто вы не разбирали настройки редакторов. Обычно в настройках предлагается указать какие URL адреса будут, относительные или абсолютные. Такая настройка по сути должна решить вашу проблему. |
Да, тут действительно не в версии дело. Т.к. у разных версий jQuery блок обработки ссылок полностью совпадают.
По поводу настройки редакторов уже пробовал: Например в elRte есть функция: absoluteURLs : false Но она работает только на те ссылки которые обрабатывает сам редактор. Т.е. на те которые вставляются в текст нажатем иконки со ссылкой. А те ссылки которые вставляются из MSWord-a походу обрабатываются напрямую через jQuery. Проверял на китайском xheditor-1.1.13. Вставлял доплнительные id в строки вставки кода (при нажатии кнопки) на сайт. Результат: Когда нажимаешь иконку ссылки на сайте, то дополнительный id-шник появляется. Когда копируешь ссылку с MSWord, да и просто если копируешь ссылку, Id-шник не появляется. Отсюда у меня вытекает вывод, что при копировании ссылки она обрабатывается через jQuery, а редактор просто выводит результат. Вот результаты проверки: <p> <a id="1" href="http://ya.ru">ya.ru</a> </p> <p> <a href="http://ya.ru/">http://ya.ru/</a> </p> <p> <a href="http://ya.ru/"><span style="font-family:Calibri;font-size:16px;color:#800080;">http://ya.ru/</span></a> </p> <p> </p> 1) это ссылка сделана редактором 2) это ссылка скопированна из строки броузера 3) это ссылка скопированна из MSWord Я подозреваю, что где-то в jQuery можно отключить функцию вывода абсолютных ссылок при копировании якорей (anchor). Или я что-то неправильно понял? |
Опять же говорю не в JQuery дело, а в плагине.
Не один из ваших плагинов не использовал, поэтому по ним ничего сказать не могу. Можете попробовать TinyMCE (есть плагин и для JQuery), может с ним у вас получится. Я его использовал всегда. Клиенты пока не жаловались (а они часто из word'a копируют) |
TinyMCE пробывал в первую очередь. Он к сожалению вообще не ловит якоря и ссылки на них. Может быть действительно в редакторе нужно поковыряться... И потом TinyMCE оставляет кучу лишнего кода и из-за этого очень сильно увеличивает текст. А у меня вообще тексты должны быть огромные, типа Конституции РФ.
Больше всего мне понравился CKEditor, но он тоже ставит полные ссылки, а якоря вообще не ловит и не проставляет. В том-то и дело, что копируют из ворда все нормально. Но якоря не все ловят. Для сравнения у текста с количеством символов в 4951 СКEditor увеличивает до 6694 TinyMCE увеличивает до 12826 Я так понимаю, что jQuery выдает одинаковые данные для всех редакторов, а редактор уже интерпретирует эти данные и выводит их в форму редактирования своими средствами? |
http://redactorjs.com/
не знаю поможет или нет, но он очень красивый) можно еще кучу текста разделить слайдерами, которые при открытии будут записываться в хеш-тэг. при открытии страницы по такой ссылке, нужный слайдер будет находиться и разворачиваться. я так решал подобную задачу. у меня уровень вложенных слайдеров доходил до 7-8 (информационная система службы техподдержки). причем еще эмулировались нажатия кнопок назад-вперед. самый лучший редактор для работы с вордом, у системы confluence, но она платная |
Этот редактор я тоже пробовал. Эффект аналогичный вышеописанному.
Делает полную ссылку на якорь. |
|
C elRte такая-же беда.
Может кто знает, как в том-же elRte эту проблему убрать? |
Есть подозрение, что за правильное понимание данных из буфера и их форматирование отвечает браузер.
+Вопрос: а вы уверены на 100%, что подставляется адрес текущей страницы, т.е. вы пробовали таки постить результирующий текст? Дело в том что отображается всегда полная ссылка(которая зависит естесно от текущей), даже если она задана в кратком виде. Как костыль можно просто добавить в конец скрипта пару строк кода удаляющих упоминание адреса текущей страницы из результата.) |
Да точно! За преобразование отвечает именно броузер. Т.к. испробовав разные броузеры, я понял, что каждый броузер обрабатывает код по разному.
Больше всего мне понравилось, как обрабатывает код Opera. И якоря сохраняет и кода меньше всего напихивает. Но тут проблема гораздо глубже. Мы имеем кучу кривых WYSIWIG редакторов которые в IE делают один код, в Opera другой в FireFox третий. Причем код меняется не только в зависимости от броузера, но и от редактора. В результатае нашел какой-то китайский редактор xheditor-1.1.13 который делает минимум кода. Увеличивает текст всего в два раза. Хотя некоторые редакторы увеличивают до объем текста аж в 6!!! раз! Похоже надо будет собраться как-нибудь с силами и написать подробный обзор WYSIWIG редакторов! Вообщем мои поиски до сих пор не окончены. Т.к. вышеупомянутый китайский редактор очень любит склеивать слова. Например "РоссийскаяФедерация". Это его любимое словосочетание. Если бы можно было избавиться от этой проблемы, цены-бы ему не было. |
Часовой пояс GMT +3, время: 07:52. |