Jquery live не всегда срабатывает
Весит у меня обработчик событий, кликов по ссылкам, такой:
$("a:not(.nolink)").live('click', function(e){ var path = this.href.replace(/^.*#/, ''); goPage(path); e.preventDefault(); }); Но в куча народу жалуются, что у них не перехватывает событие клика по ссылке и переходит по ней... Все, кто жалуются - сидят на Opera 10.62/10.63 Я пробовал в этой версии Opera - все работает. Пробовал оборачивать его в document.ready() тогда жалоб еще больше. Используется это дело в iframe-приложении Контакта - http://vkontakte.ru/app1905375 Из-за чего такая проблема может возникать и как можно побороть? Всем заранее спасибо! |
e.preventDefault(); не отработал. возможно ошибка в goPage(path); или this.href не string(хотя это врятли).
ведите лог ошибок на клиенте, только не сжимайте код в одну строчку иначе всегда ошибка будет в первой строчке. window.onerror = function(a, b, c) {new Image().src = "/4tota/?err="+escape(a)+','+escape(b)+','+escape(c);} |
Сейчас попробую, но боюсь он забьется ошибками вида:
!:@8?BC <http://kontakter.me> >B:070=> 2 @07@5H5=88 =0 2K7>2 <5B>40 Location.toString =0 <http://vkontakte.ru>. Которые возникают в FF из-за вставленного флеш-видео. UPD: Хотя нет, не забьется, такие ошибки возникают только на localhost |
Вот первый лог http://dumpz.org/23441/
Куча левых ошибок, в подключаемых скриптах, они как-то могут влиять на сробатывание live? |
JIEXA, если до e.preventDefault(); произошла ошибка то естественно отмены события браузера не будет. live тут не причем.
e.preventDefault(); можно перенести в начало функции тогда хотяб перехода по ссылки браузером не будет. но это ошибки не исправит. скорее всего ошибка в коде функции goPage или кудато туда дольше. |
Спасибо за помощь. Попробую перенести выше.
Функция goPage проста: function goPage(path) { VK.callMethod("setLocation", path); var h = window.location.href; var h = h.split('post_id').join('nepost_id'); var href = h.substr(0, h.indexOf('&hash=') + 6) + escape(path); window.location.href = href; } |
Часовой пояс GMT +3, время: 01:38. |