![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| Frozen_Coyote |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 20.9.2007 Репутация: нет Всего: нет |
Здравствуйте,
подскажите пжалуйста, задача меня уже месяц третирует - я не знаю как ее решить несмотря на кучу советов - подскажите плиз, как грамотнее все реализовать все очень просто по смыслу, но в силу моего какого то очевидного незнания, для меня - очень сложно. я тут вывесил два поста - за исключением очень редких (спасибо вам, друзья) ответов - это сплошные музеи: все тихо заходят, тихо смотрят и тихо уходят. Инкремент счетчика накручивается - толку нет. Оставим лирику, вернемся к проблеме: Есть редактируемый ифрэйм. Мне нужно из выделения сделать ссылку. При этом ссылку сделать вместе с css классом. По этой причине execcommand createlink не подходит, хотя он отлично создает ссылки. Что в нем хорошо: если выделяешь текст в несколько параграфов - этот метод у каждого параграфа создает отдельный блок a href. НО БЕЗ КЛАССОВ! А классы применить к данной ссылке нужно как и наличие самой ссылки так сказать, без классов никуда. Остается два видимо приемлимых варианта (давайте на примере хрома, я знаю, как метод вставки HTML работает в разных браузерах - это пока неважно) 1. с помощью insertHTML. Все бы хорошо, но при обертывании выделенного фрагмента текста и вставкой его в ифрэйм вокруг образуются лишние теги, <p><a href=''><p>выделенный текст</p></a></p> Это не есть гуд, ибо хотелось бы валидность соблюдать. Пытался предварительно удалять текст и deleteContents() и execcommand.delete - что опера что гугл на месте удаления оставляют какой то мусор - типа <p><br /></p> - соответсвенно следующая вставка - нарушается валидность. 2. с помощью вышеозначенного execcommand.createLink(идеальный метод, именно по прчиине отдельной ссылки для каждого из параграфов) но с возвращением выделения на созданную ссылку, опять создания выделения на ней, обхода всех элементов, поиска тэга А и присваивания ему аттрибута class с помощью setAttribute. Друзья, я честно говорю , я - тупой. Я не могу никак всосать, как это сделать (второй вариант) - ибо второй вариант решения, интуитивно понимаю это, едиснтвенно верный. Я задолбался месяц лопатить гугл яндекс и т.д. по всем странам в поисках помощи в решении - я уже понял что в мире поиск и модификация тегов внутри пользовательского выделения в ифрэйме понадобилась только мне и никому более. Советы которые я получал на западниках один глупее другого - как нормальный человек, я допускаю что дурак я, а не все остальные, хотя я сам не могу понять, что непонятного в проблеме которую я озвучил. я готов оплатить помощь в решении данной проблемы ибо у меня уже реально поддувает под панаму от такого трындеца... спасибо |
|||
|
||||
| magelan |
|
|||
![]() потерял xPath ![]() ![]() Профиль Группа: Участник Сообщений: 393 Регистрация: 5.4.2010 Репутация: 2 Всего: 16 |
1. неплохо выложить пример, где вы с помощью экзеккомманд делаете ссылки без классов (вот ей богу ломает писать несколько html-ек с нуля), архивы к форуму пристегивается.
2. вам точно надо класс у ссылок? они нескольких классов в вашем редакторе? может достаточно правильно цсс написать типа .editableBlock A {...} ? Проблемы которые вы поднимаете - решаются, как я вам уже писал либо регексом, либо вы умеете двигать каретку и гулять по блокам текста в стиле MS Word. Либо изображаете из себя анализатор текста, что медленее, но более понятно для обычных людей. Еще можно подумать на тему хаков, ставить не ссылку, а какой-нибудь спан с вашим классом, после этого все равно надо либо регекс, либо вы обходите все дерево отыскивая свои "уникальные" спаны и меняя их аналогом outerHTML. Собственно именно ваши проблемы мешают сообществу написать полноценный бесплатный визивиг. P.$ как вариант хака - можно ставить какую нибудь лихую ссылку типа "my-protocol://forum.vingrad.ru", потом прощупывать все A на предмет такой ссылки, цеплять им класс, менять протокол на http. Это сообщение отредактировал(а) magelan - 7.10.2011, 13:31 |
|||
|
||||
| Apelsin |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 20.4.2009 Репутация: 1 Всего: 1 |
Добавляйте нужный css класс в исходный код вашего iframe и применяйте к выделенному тексту нужный тег + класс.
Проблема, на сколько я понял, бегло прочитав ваше сообщение, в том, что в iframe не видно классов основной страницы. |
|||
|
||||
| Frozen_Coyote |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 20.9.2007 Репутация: нет Всего: нет |
Рассказываю, что мне необходимо:
администратор сайта, к примеру ставит некий материал на сайт - новость. И вот в новости ему допустим надо все фамилии мужчин сделать зеленой ссылкой, а женщин - красной. Поэтому в моем редакторе при оформлении ссылки предварительн можно выбрать некий класс, который пойдет параметром при превращении текста в линк. Поэтому задача в теории проста: выделяется текст, указываются параметры (урл, названия класса и нажимается ОК Понеслось. Текст конвертируется в ссылку, (выделение охраняется) далее javascript обходит все ссылки на странице циклом (есть ли другой способ?) и если очередная ссылка входит в пользовтельский selection - сеттит атрибут class. Вот так Ребят, я изрядно продвинулся в своих сражениях в этом вопросе - и победил Хром, Оперу Фаер и Сафари (см. ниже) - остался ИЕ
с ИЕ же затык вот в чем - не могу понять как заставит его проверять - входит ли очередной линк в пользовательское выделение (см. код) как узнать - принадлежит ли некий узел страницы пользовательскому выделению? если справлюсь с этим - можно скзаать что победа
|
||||
|
|||||
| Frozen_Coyote |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 230 Регистрация: 20.9.2007 Репутация: нет Всего: нет |
Уффффф.. ну вроде победа.. Враг бежит...
|
|||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |