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, время: 18:27. |