Асы JS’а, подскажите.

Есть у меня <p>абзац с текстом, возможно, очень длинным, возможно, содержащим теги <br>, <strong>, <em> и <u>.</p>.

Пользователь кликнул где-то по тексту внутри этого абзаца, например, по пробелу между словами «очень» и «длинным». Мне нужно получить 2 строки: в первой должен быть весь текст (с возможными инлайновыми тегами) от начала абзаца до места клика, во второй — весь текст от места клика до конца абзаца. Возможно ли это, и если да, то как?

Tagged with →  

19 Responses to Асы JS’а, подскажите.

  1. 01pSpb:

    хуй знает, может, что-то примерно такое:
    1) находишь относительные координаты клика
    2) Копируешь полностью innerHTML
    3) Создаешь новый P с теми же стилями, в который посимвольно пихаешь старый innerHTML, пока ширина и высота нового дива не станет равна координатам клика, сохраняя «позицию курсора» (количество символов с начала текста)
    4) Берешь подстроку от 0 до этой «позиции курсора» — это начало, подстрока от «позиции курсора» до конца — второй кусок.
    Бред, конечно, но что-то в голову ничего не лезет больше

  2. Yksin:

    Пиздануться можно. Спасибо.

  3. DnaSm:

    window.getSelection && document.selection

  4. Kilin:

    Эксплоадишь символы абзаца в массив по одному.
    Отслеживаешь номер объекта из массива, на который кликнули.
    Режешь массив на две части: до элемента и после.

    Только нахер это?

  5. 01pSpb:

    на пробел, например, не повесишь обработчик. разве что каждый символ в спан какой-нибудь оборачивать. Но да, идея

  6. Yksin:

    Я так и сделал, засунул каждое слово в спан и обрабатываю клики на них.

    : А нужно это для того, чтобы пользователь мог быстренько мышкой разбить некий рандомный текст на абзацы. Используется на notabenoid.com

  7. Kilin:

    Если критично учитывать пробелы, тогда можно их заменить на символ, который 100% не встретится в тексте, обернуть все в спаны с id, а после обработки заменить обратно.

    Кстати, если знаем более-менее точный набор тегов из абзаца, можем их также заменить на спецсимволы, чтобы они не эксплоадились, а после обработки вернуть обратно.

  8. Kilin:

    О, тогда ясно зачем.

  9. Ycihlam:

    а jquery может умеет что-то типа поиска, как по атрибутам, только по значению и туда пробел пиздануть или регексп. И сразу вешать onclick. Типа так $(«p:contains(‘ ‘)»).click()

  10. Ycihlam:

    т.е. смотреть в сторону http://api.jquery.com/contains-selector/… contains, find() etc

    http://stackoverflow.com/questions/92658

  11. Ycihlam:

    ну и дальше уже в обработчик клика смотреть, по идее this вернет или индекс или по крайней мере можно маркер какой-то поставить

  12. Yksin:

    Это повесит onclick на все абзацы, в которых есть пробел.
    Впрочем, я уже сделал этот интерфейс.

  13. LgnZero:

    асы js, работа кому нужна?)

  14. XibZZ:

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

  15. Yksin:

    А нахера тебе? В смысле, мне интересно, где ещё может понадобиться такое.

  16. Kilin:

    так уже нашли решение чуть повыше

  17. XibZZ:

    ну не совсем такое, но почти — есть мысля грубо говоря квотинг а-ля apple mail сделать (примерно, долго объяснять), писать и ваще разбираться влом, а скопипастить и мальца подправить фигли нет 🙂

    ну я уже понял откуда копипастить, так что не куплю 😛

Добавить комментарий