|
Модераторы: Sardar, Aliance |
|
12345c |
|
|||
Круглый Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 2 Всего: 101 |
Доступ к форуму исправил (провайдер переносил сайт на другой сервер).
По изменениям: вообще-то грамотно всё, что работает. Глядя на приведённые примеры, приходится догадываться, для чего они. Если $name идёт из PHP, то, вероятно, Вы хотите поставить имя пользователя, читателя страницы. Если это нужно, то лучше в другом месте скрипта, в более позднем. Если предположить более логично, что Вы хотите имя автора текста вставить в цитату, то делается это заметно сложнее, но вполне выполнимо (на словах описано где-то выше в теме). Ищется в структуре документа место в сообщении, где написан автор (и дата), и копируется в цитату. Это, понятно, надо делать в insCapt(s), пока существует выделение, указывающее на сообщение, в котором оно находится. Используются функции parentNode, чтобы найти ячейку сообщения по его классу, затем childNodes. ...Вообще-то нет, селекция есть нода документа а не ячейки с сообщением. Надо другим методом искать. Сейчас неохота заморачиваться таким вопросом, может, кто-то другой подскажет. Это сообщение отредактировал(а) 12345c - 4.2.2007, 12:13 |
|||
|
||||
Centuriones |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 2.4.2007 Репутация: нет Всего: нет |
Почти аналогичное существует и в IE 6 - в случае, когда размер выделенного текста превосходит размер текстовой области, то вставка тегов "с сохранением выделения" приводит к тому, что происходит прокрутка текста к открывающему тегу. При этом выделение сохраняется и дальнейшая вставка работает корректно. Курсор при этом находится "внизу" выделенного текста. Если далее применить вставку тегов "без сохранения выделения", то происходит вставка тега и прокрутка "вниз" до положения курсора. В FF 2.0.0.3 и Opera 9.10 подобной проблемы просто не существует. Существует ли какая-нибудь возможность исправления этого бага с IE? P.S. Извините, что приходится писать про это здесь, а не на вашем форуме, но к сожалению отправка сообщений там не работает, несмотря на то, что я зарегистрировался на сайте. А сам скрипт по своей функциональности просто прекрасный (даже с учетом бага с IE), так что за его создание - большое спасибо! |
|||
|
||||
12345c |
|
|||
Круглый Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 2 Всего: 101 |
Этот случай не рассматривал, с выделением в IE больше области, посмотрю, что с ним сделать. Вообще-то, то, как Вы описали, корректно для логики IE - он прокручивает поле так, чтобы был виден курсор. И для дальнейшего ввода важно видеть его. Может быть, так и нужно оставить?
На форуме том какие-то непонятности с поведением прав доступа, нужно форум и скрипт другой ставить. |
|||
|
||||
Centuriones |
|
|||
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 2.4.2007 Репутация: нет Всего: нет |
Так дело в том, что мы курсор не видим в IE в случае длинных выделений. Он "где-то внизу" за границами текствой области, там же, где и закрывающий тег. Т.е. тоже самое, что было в FF, только в FF происходила прокрутка до начала текста, а в IE она происходит до начала вставленного открывающего тега (это все в режиме "с сохранением выделения").
Вот тут - иллюстрации: 1 - выделение до вставки http://neocrome.ru/datas/users/77-ie6_1.gif 2 - прокрутка выделенной области после вставки тега - http://neocrome.ru/datas/users/77-ie6_2.gif Это сообщение отредактировал(а) Centuriones - 4.4.2007, 00:14 |
|||
|
||||
12345c |
|
||||||||
Круглый Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 2 Всего: 101 |
Так логику IE понять можно - выделение считается курсором ненулевой длины. Начало курсора - начало выделения. Так как есть правило - делать видимым мигающий курсор после операции, возникает вопрос, что считать курсором. Решили, что начало выделения должно попадать в видимую область.
Но, допустим, что это надо обойти. Используем тот же insField.scrollTop для того, чтобы прокрутка осталась на месте. Вставить восстановление прокрутки, с учётом всяких хитростей браузеров, надо здесь (в setTimeout): было -
; делаем -
И, соответственно, переменную scrl делаем глобальной: было -
; делаем -
Ещё надо заметить, что в скрипте остался баг, присущий IE, относящийся к выделению последних переносов строки. Но его обход требует 1.5 КБа кода, и потому он имеется во всех (существующих в природе) скриптах вставки ББ-кодов. Я тоже не стал его исправлять, хотя решение его (функция) на форуме есть ( http://forum.vingrad.ru/topic-115734.html ). (Её прикрутить - неочевидное дело, но возможное.) |
||||||||
|
|||||||||
F13 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 30.8.2006 Репутация: нет Всего: нет |
12345c, подскажите, пожалуйста, как убрать скобки у смайлика, чтобы вставлялся код :smile: а не [:smile:]?
Т.е. по бокам скобки лишние, ведь в основном код смайла всегда имеет по бокам только двоеточие... Это сообщение отредактировал(а) F13 - 20.4.2010, 22:48 |
|||
|
||||
12345c |
|
|||
Круглый Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 2 Всего: 101 |
F13, просто напишите свою функцию, заменяющую insPic (она там со строки 4 в первом сообщении) и вместо скобок brkL, brkR ставьте свои.
Тогда смайл вызывается по insPic('smileText', null, null, ':','') или сделайте более короткую оболочку вызова вместо этой: smle=function(s){insPic(s, null, null, ':','')} . Заодно, проверил работу в браузерах: FF3.6, IE8, Opera 10.51, Opera 10.1 - работает. Баг с пустыми Enter в конце для IE8 сохранился. (Возможно, часть специфического кода для багов Оперы 8-9 и FF1.07 уже не нужна, но остаётся как дополнительный бонус.) -------------------- Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go |
|||
|
||||
F13 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 30.8.2006 Репутация: нет Всего: нет |
12345c, спасибо большое, работает!
Единственное не вкурил, как это должно работать: Скорее всего имелось ввиду создание ещё одной функции, я правильно понял? - function insSmile(s){insPic(s, null, null, ':','')} По крайней мере так тоже работает: onmousedown="insSmile('кодСмайла')" Это сообщение отредактировал(а) F13 - 4.5.2010, 02:14 |
|||
|
||||
12345c |
|
|||
Круглый Профиль Группа: Vingrad developer Сообщений: 2018 Регистрация: 26.12.2005 Где: наша не пропадала ? Репутация: 2 Всего: 101 |
F13, после того дополнения кода в insPic (if(brkL==null)brkL='['; if(brkR==null)brkR=']';) 4-й и 5-й параметры - это подмена скобок, заданных по умолчанию в глобальных переменных. Если не пишете этих параметров, ставятся brkL, brkR - квадратные скобки как имена параметров внутри этой функции (insPic). Теперь, если обращаетесь к ней и хотите поменять скобки на одиночное двоеточие слева, вызываем insPic через обёртку
-------------------- Google Code Playground - онлайн-отладка своих примеров HTML+JS без регистрации, с сохранением по URL, без кириллицы. Go |
|||
|
||||
F13 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 30.8.2006 Репутация: нет Всего: нет |
12345c, а в HTML функция будет так вызываться:
Правильно? Спасибо ещё раз, разобрался... Всё работает прекрасно... Ваш скрипт - лучший в своём роде... И это факт! Это сообщение отредактировал(а) F13 - 8.5.2010, 16:17 |
|||
|
||||
Здесь публикуют скрипты, которые уже проверены в обсуждениях других тем (при этом полезно поставить ссылки на все смежные обсуждения) или переносятся кем-либо из модераторов по просьбе участников, если видно, что в результате обсуждения темы был написан полезный или интересный скрипт. Третий возможный вариант - участник форума публикует скрипт, заведомо известный как полезный и эффективный, для, возможно, небольшой доработки и обсуждения. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Наши скрипты | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |