Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / HTML, JavaScript, VBScript, CSS Новый топик    Ответить
 Javascript. Как отпарсить выделенный фрагмент текста?  [new]
Хуль
Member [заблокирован]

Откуда:
Сообщений: 17
Здравствуйте!

Подскажите пожалуйста как средствами Javascript отпарсить выделенный фрагмент текста на произвольной веб-странице на предмет ссылок, жирного и курсивного текста, с тем, чтобы заменить их на BB-коды?

Заранее благодарен.
14 май 10, 21:38    [8778114]     Ответить | Цитировать Сообщить модератору
 Re: Javascript. Как отпарсить выделенный фрагмент текста?  [new]
ShSerge
Member

Откуда: ʚонɔ dиw
Сообщений: 23835
Вопрос-то о чём? Как выделить, как распарсить или вообще, что такое яваскрипт и с чем его едят?
Посмотрите объект selection в MSDN для ИЕ и не помню как в ФФ и др. - сами ищите (типа seltctionStart и selectionEnd). Распарсивать лучше всего стандартными средствами, DOM, например. Не понятно что за задача. Хотелось просто ответить - нельзя.
14 май 10, 22:40    [8778227]     Ответить | Цитировать Сообщить модератору
 Re: Javascript. Как отпарсить выделенный фрагмент текста?  [new]
Хуль
Member [заблокирован]

Откуда:
Сообщений: 17
Допустим, меня интересует какой-то фрагмент текста на странице.

Мне нужно получить этот фрагмент в виде, когда ссылки, жирный текст и курсив заменены на bb-коды.

И я не знаю, как лучше это было бы сделать: обрабатывать исходный код выделенного фрагмента или как-то "добраться" до DOM-элементов.

Ну-да. В Яваскрипт я очень начинающий, поэтому, если бы мне подсказали в сторону каких функций смотреть, я бы был благодарен.
14 май 10, 23:09    [8778303]     Ответить | Цитировать Сообщить модератору
 Re: Javascript. Как отпарсить выделенный фрагмент текста?  [new]
vkle
Member

Откуда: Самара
Сообщений: 11177

Хуль,

> Допустим, меня интересует какой-то фрагмент текста на странице. Мне
> нужно получить этот фрагмент в виде, когда ссылки, жирный текст и
> курсив заменены на bb-коды.

Откуда берётся страница, каким образом сделаны жирный и курсив (стилями или хтмл-кодом)?

Posted via ActualForum NNTP Server 1.4

15 май 10, 03:22    [8778640]     Ответить | Цитировать Сообщить модератору
 Re: Javascript. Как отпарсить выделенный фрагмент текста?  [new]
Яростный Меч
Member

Откуда: здесь была правда.

Слоган: Делфи жив!!!
Сообщений: 28122
Хуль
Допустим, меня интересует какой-то фрагмент текста на странице.

Мне нужно получить этот фрагмент в виде, когда ссылки, жирный текст и курсив заменены на bb-коды.

И я не знаю, как лучше это было бы сделать: обрабатывать исходный код выделенного фрагмента или как-то "добраться" до DOM-элементов.
Делаете "цитирование выделенного фрагмента сообщения" для своего форума?
15 май 10, 09:55    [8778774]     Ответить | Цитировать Сообщить модератору
 Re: Javascript. Как отпарсить выделенный фрагмент текста?  [new]
Хуль
Member [заблокирован]

Откуда:
Сообщений: 17
Яростный Меч
Делаете "цитирование выделенного фрагмента сообщения" для своего форума?

Неет.
Но намёк понял! :-)

А, вообще, я пишу скрипт под Greasemonkey, который должен помочь мне в копи-паст делах :)

Что я хочу:

Есть сайт-источник и сайт-цель.
Статьи на разных СИ оформлены по-разному.
На СЦ они все приводятся к одному виду, который предусматривает наличие нескольких составных частей у статьи. Некоторые из них постоянны (константы), а некоторые - переменные.
Если константы (логотипы, реквизиты, адреса домаш.страниц и т.п.) я планирую получать из "базы", то с переменными (датой, краткой версией, преамбулой, основным текстом) - морока.
Приходится "скакать" по вкладкам и переносить все эти части по очереди.

Во-первых, думаю над тем, как собрать все переменные части и потом разом перенести на страницу с формой.
Пока решил делать так: выделять по очереди все части и нажатиями хот-кеев - добавлять их в строку, отформатированную специально "под массив", которую потом просто скопировать в буфер и перенести на страницу с формой и там разобрать. Тут, хотя бы идея есть.

Но главный тормоз - основной текст новости.
На сайте источнике он отформатирован, а главное, оттегирован по-разному (иногда от обилия <font>'ов с ума сойти можно), а на сайте-цели его нужно перенести в BB-кодах.

Как подойти к решению этого вопроса не знаю.

Ну, выделил я нужный фрагмент текста (с ссылками, болдами, италиками) ... и как его "отпарсить"?

Думал про парсинг исходного кода - но там, как я говорил, часто "страшная каша" бывает.
И я еще пока не знаю как "добираться" до исходного кода через Javascript.

Может быть есть возможность отпарсить выделенный фрагмент как DOM-элементы? Тем более тогда, как я понимаю, будет доступен т.н. скомпилированный стиль и не нужно копаться в <i> <em> <b> <strong>.

Подскажите, возможно-ли такое?
На какие функции обратить внимание?
15 май 10, 11:35    [8778907]     Ответить | Цитировать Сообщить модератору
 Re: Javascript. Как отпарсить выделенный фрагмент текста?  [new]
Яростный Меч
Member

Откуда: здесь была правда.

Слоган: Делфи жив!!!
Сообщений: 28122
Хуль,

в принципе, возможно, но весьма нетривиально.
Во первых, матчасть (там же ссылки на другие ресурсы по теме). Вам невероятно повезло, что надо делать только для Firefox - там всё четко и по стандартам.

Я здесь вижу 2 концептуально разных пути - либо брать HTML выделенного фрагмента и работать со строкой (регексы в помощь), либо делать обход DOM между начальной и конечной точкой, анализировать теги, имеющиеся на них стили, и подставлять нужные теги ББ.
15 май 10, 11:48    [8778928]     Ответить | Цитировать Сообщить модератору
 Re: Javascript. Как отпарсить выделенный фрагмент текста?  [new]
Хуль
Member [заблокирован]

Откуда:
Сообщений: 17
Яростный Меч
Хуль,

в принципе, возможно, но весьма нетривиально.
Во первых, матчасть (там же ссылки на другие ресурсы по теме). Вам невероятно повезло, что надо делать только для Firefox - там всё четко и по стандартам.

Я здесь вижу 2 концептуально разных пути - либо брать HTML выделенного фрагмента и работать со строкой (регексы в помощь), либо делать обход DOM между начальной и конечной точкой, анализировать теги, имеющиеся на них стили, и подставлять нужные теги ББ.


Повезло, главным образом потому, что это я пока только "для себя любимого".
А про Firefox был наслышан, а теперь и сам потихоньку убеждаюсь, что сделан он "конкретно".

Про эти два пути я догадывался, мне важно было услышать от спеца, что это возможно в принципе.

За хорошую новость и за ссылку большое спасибо!
15 май 10, 12:27    [8778982]     Ответить | Цитировать Сообщить модератору
 Re: Javascript. Как отпарсить выделенный фрагмент текста?  [new]
Хуль
Member [заблокирован]

Откуда:
Сообщений: 17
А можно ли получить "выделение" из другого окна браузера?
6 июн 10, 22:23    [8899129]     Ответить | Цитировать Сообщить модератору
 Re: Javascript. Как отпарсить выделенный фрагмент текста?  [new]
ShSerge
Member

Откуда: ʚонɔ dиw
Сообщений: 23835
Хуль
Повезло, главным образом потому, что это я пока только "для себя любимого".

Надеюсь, поэтому и всем пользователям интернета повезло.
Хуль
А можно ли получить "выделение" из другого окна браузера?

Во втором посте я Вам написал "seltctionStart и selectionEnd". Делайте из любого окна.
7 июн 10, 09:48    [8899944]     Ответить | Цитировать Сообщить модератору
 Re: Javascript. Как отпарсить выделенный фрагмент текста?  [new]
Хуль
Member [заблокирован]

Откуда:
Сообщений: 17
Вот, ребята )

Я с небольшим отчётом )

Так, как я вовсе не программист, а просто страждущий любитель облегчить себе жизнь, то ожидать от меня каких-то изысков и эффективных решений нельзя. Опыт не тот.

Предлагаю вам посмотреть, что у меня получилось (и, что не получилось — тоже).
Отмечу, что пользуюсь этим скриптом уже около года. Один раз даже модифицировал. Сейчас есть целый ряд замечаний по улучшению (прямо, как о серьёзном продукте! А, как же, своё дитятя!)

Форма заполнялась вручную. Для каждого поля формы данные отдельно таскались через буфер обмена.
Жуть, да и только.
Особенно качественно прошла демонстрация выбора категорий статьи. Сначала даже хотел переписать ролик, но так, как там ничего не сделано специально, то решил оставить. Множественный выбор, как известно делается с удержанием Ctrl, а, если при этом повернуть колёсико мышки для прокрутки списка, то меняется масштаб отображения. А если мышка ещё и подтормаживает, то легко пару раз и промахнуться )) :
Вот так выглядел процесс в стиле «по-старинке» (штатные элементы DLE)

Зато теперь, один раз настроив шаблон, мне не нужно беспокоиться о таких полях, как «Источник», «URL источника» и главное — категории выбираются сами. Основное форматирование (дата, преамбула) тоже автоматизированно.
Кроме того, добавляется логотип (и шапка текста новости), а так же, если есть, дисклеймер или информация об организации.
Всё это за 2 клика: 1 — выбор категории в левом списке, 2 — щелчок на нужном пункте в правом списке (решение взято с сайта tigir.com).
А вот так идёт работа после проведения модернизации

Кроме того, есть возможность выбирать категории при помощи набора флажков, снабженных пиктограммами, что гораздо удобнее, чем крутить сто раз на дню безликий список, ограниченный 5-тью(!) строками видимости.

Все данные хранятся на локальном компьютере в Local DOM Storage (Хранение данных на клиенте. DOM Storage и его аналоги.)

Всем большое спасибо!

P.S.
Правда, я так пока и решился взяться за реализацию парсинга (он бы помог с форматированием и ссылками). Но идею эту никуда не отбросил.
26 мар 11, 04:19    [10426663]     Ответить | Цитировать Сообщить модератору
Все форумы / HTML, JavaScript, VBScript, CSS Ответить