Навигация по страницам топика <ctrl>+стрелки

new225
Barim:

***но вот выполнение действия переход по страницам во время редактирования - действие прямо таки вредное***

Зато как подозреваю есть очень полезно для счетчика посещенных страниц 😈

InterceptorRC

Вот блин, а я уже тредий день матерюсь, что за фигня. Набрал сообщение, как обычно нажимаю Ctrl + <-, чтобы подправить а оно перескакивает на другую страницу. Соответственно - весь набор в воздух. Труба как неудобно. Просто все движения уже на автомате. Вот это сообщение набираю второй раз. Отключить бы нафиг, хотя бы по желанию.
Теперь придется набирать в отдельном редакторе.

new225
InterceptorRC:

Вот блин, а я уже тредий день ***

К сожелению очевидно что вы ничего не понимаете в продвинутых методах навигации разработанные Артемием Лебедевым и успешно примененные на сём форуме… Стыдитесь…

HikeR
Vitaly:

Ctrl + Влево, Ctrl + Вправо - перелистывание страниц (работает везде, где есть многостраничная полоска с циферками)

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

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

new225
HikeR:

* давно закреплены за переходом между словами***

И вас Виталий научит родину и Тему любить и уважать…

Vitaly

Любезный, если вы продолжите повторяться в этом разделе, я от вас эдак на месяц избавлюсь. Просто чтобы не отвлекали по 10 раз на одно и то же. Правда побочным эффектом будет, что вы не сможете все это время общаться на форуме.

new225

Хорошо, постараюсь больше вас не отвлекать…

1 month later
tatata

Очень неудобно во время редактирования сообщения, попытавшись встать в начало текста сочетанием <Ctrl>+<Home>, получать редирект на главную страницу форума.

8 days later
AlexSr

Виталий! При переходе по стрелке “вниз” + CTRL в разделе вылезла вот такая страница.

Обстоятельства:
1 - находился в самой нижней непрочтёной теме. (всего около 5-6 непрочтёных тем)
2 - выше неё (непосредственно) находилось сообщение о переносе темы. То же “непрочтёное”.
3 - сама перенесённая тема в другом разделе, к этому моменту была помечена как “прочтёная”.

P.S. Повторная попытка в разделе (не в теме) использовать сочетание “вниз” + CTRL выбрасывает на ту же “нулевую” страницу. При этом, никакие сочетания клавиш перехода не работают на “нулевой” странице.

P.P.S. После прочтения темы (тем) выше перенесённой, попытка перехода по клавишам даёт всё тот же результат.

P.P.P.S После прочтения последней “непрочтёной” темы - эффект пропал.

27 days later
magic

Недавно зарегистрировался на форуме и существенно мучаюсь с раздражениями из-за этих горячих кнопок. В опциях профиля не нашел возможности отключить этот сервис. Каждое сообщение набираю с матюками - очень неприятно. 😦
Администратор, прошу оказать содействие.

25 days later
magic

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

Существующий на сайте код с дополненительными двумя строками (выделил их жирным):


<script type="text/javascript"><!--
document.onkeydown = NavigateThrough;
var useHotKey=true;
function NavigateThrough (event)
{
  if(!window.useHotKey) return;
  if (!document.getElementById) return;
  if (window.event) event = window.event;
  if (event.ctrlKey && !event.shiftKey) {
    var link = null;
    var href = null;
    switch (event.keyCode ? event.keyCode : event.which ? event.which : null)
    {
      case 0x25: link = document.getElementById ('LinkPrev'); break;
      case 0x27: link = document.getElementById ('LinkNext'); break;
      case 0x26: link = document.getElementById ('LinkUp'  ); break;
      case 0x28: link = document.getElementById ('LinkNew' ); break;
      case 0x24: href = '/'; break;
    }
    if (link && link.href) document.location = link.href;
    if (href) document.location = href;
  }
}
// --></script>

Нижеследующий фрагмент новый для форума и его надо поставить обязательно в самый конец прямо перед </body> или как более корректный вариант по onload документа.
Работа скрипта: назначить всем полям форм onfocus и onblur функции, которые по вызову будут менять переменную useHotKey. В целом, этого будет достаточно, но можно втянуть в эту разметку и другие элементы документа если появится необходимость, например “чек-боксы” и “баттоны”.


<script type="text/javascript"><!--
var c = document.getElementsByTagName('textarea');
for (var i=0; i<c.length; i++) {
	c[i].onfocus = onFocusHandler;
	c[i].onblur = onBlurHandler;
}
var c = document.getElementsByTagName('input');
for (var i=0; i<c.length; i++) {
	if (c[i].type == 'text') {
		c[i].onfocus = onFocusHandler;
		c[i].onblur = onBlurHandler;
	}
}
function onFocusHandler() {
	window.useHotKey = false;
}
function onBlurHandler() {
	window.useHotKey = true;
}
// --></script>

PS: Протестировано локально в MSIE.
Как будет себя вести именно в этом в форуме - надо проверять.

Vitaly

Спасибо. Есть пара вопросов

  1. GetElementByTagName() не накрячится в какой-нибудь опере? Кажется, там были какие-то отличия.

  2. А не будет ли достаточно навесить хендлеры только на textarea в упрощенном и полном редакторе? Там вроде всего пара шаблонов должна быть, потому что стандартный код для всех случаев.

  3. А в каких браузерах вообще есть проблема? Только что заметил, что пользуюсь фаерфоксом и ни разу не сталкивался.

magic
Vitaly:

Спасибо. Есть пара вопросов

  1. GetElementByTagName() не накрячится в какой-нибудь опере? Кажется, там были какие-то отличия.

  2. А не будет ли достаточно навесить хендлеры только на textarea в упрощенном и полном редакторе? Там вроде всего пара шаблонов должна быть, потому что стандартный код для всех случаев.

  3. А в каких браузерах вообще есть проблема? Только что заметил, что пользуюсь фаерфоксом и ни разу не сталкивался.

  1. Проверил в Опере 9.10
    Работает, ошибок не обнаружил.

  2. Цикл ведется по объектам определенного типа, соответсвенно, довольно быстро и нагружать компьютер юзера не должен т.к. этих объектов в документе ограниченное кол-во. Можно, конечно, оставить только textarea, но в теме сообщения и в поле для поиска кто-то да попадется на горячие клавишу, что логически некорректно. Можно, конечно, просто взять и перечислить объекты вручную а не так вот универсально в цикле, но как-то хлопотно да и разница в быстродействии будет пшиковая.

  3. В файрфоксе 2.0 у меня ни текущий скрипт ни с моими доработаками не подает признаков жизни. Разбираться недосуг, если у Вас, Виталий, заработает - этого будет вполне достаточно для начала.

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

PS: спасибо за отклик и потраченное время.

Vitaly

Ok. Я посмотрю, как это половчее прикрутить. В жабаскрипте не силен, так что ваша помощь с готовым кодом оказалась очень кстати.

Vitaly

Добавил блокировку. Можно проверять. Теперь если курсор стоит в области редактирования, то хоткеи должны блокироваться. Также выкинул Ctrl+Home как не особо нужное.

У кого с этим были проблемы - напишите, стало ли лучше, хуже, и какой браузер. Особенно интересуют различные версии IE и Оперы.

PS. Если все работает как надо - деньги и благодарности слать magic 😃

HikeR

Opera 10.00 Beta 2 - полет нормальный. ctrl + стрелки и home не перехватываются.

magic

MSIE 7.0.5730.11 - норм
Opera 9.10 - норм
FireFox 2.0 - норм

Виталий, спасибо за оперативное вмешательство.
Доброго дня.

29 days later
magic

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

С лету пока понятно, что при интерактивном развертывании формы, новым элементам формы не назначены нужные нам события onfocus и onblur.
На вскидку направление решения на выбор:

  1. (долго но красиво) - в скрипте AJAX forum.rcdesign.ru/…/vbulletin_quick_edit.js надо что-то докрутить.
  2. (побыстрей но “коряво”) - по нажатию любой кнопки проверять фокус и если оный в элементе формы без ужных нам onfocus и onblur - их назначать =)

Готовый “рецепт” пока дать не готов - со свободным временем всегда туго.

Vitaly

Ну я пометил, с низким приоритетом, что надо исправить. Разберемсо. Как у программистов будет время - посмотрят, куда половчее кода навтыкать, чтобы цивилизованно все разрулить.

Vitaly

А не проще вообще на срабатывание хоткеев повесить проверку форкуса, где сработало? Зачем на элементы вешать обработчики дополнительные?