2015-04-14 4 views
1

У меня есть всплывающее окно подтверждения, которое открывается, когда пользователь нажимает на эту ссылку:JavaScript OnClick не работает в Firefox

<a onClick="openPopup('#popup1')">foo</a> 

здесь является соответствующий JavaScript:

function openPopup(id) { 

    $(id).show(); 
    event.preventDefault(); 
    $(id).addClass('is-visible'); 
    $(id).css("z-index", "999999999999999999999999"); 

} 

В Safari и Chrome так ли работает отлично. Однако в Firefox триггер не работает. Любые идеи почему?

Я уже пытался изменить ссылку так:

<a href="javascript:openPopup('#popup1');">foo</a> 

никаких изменений, хотя. Спасибо за вашу помощь!

+2

Если вы используете jQuery, как указывают теги, лучше всего поймать событие click в $ ('selector) .on (' click ' , function() {}) Встроенный javascript становится основным кошмаром обслуживания. – bpeterson76

ответ

7

В Firefox, однако, триггер не работает. Любые идеи почему?

Firefox не делает объект события глобальным. Вы должны передать его вместе с обработчиком событий, например.

onClick="openPopup('#popup1', event)" 

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

+0

Спасибо за ваш ответ! Я не уверен, как использовать обработчик событий, какой элемент должен туда попасть? – Frank

+0

Я не понимаю, что вы имеете в виду. –

+0

ну, вы добавляете «событие» в вызов функции, функция тоже должна быть скорректирована, правильно? – Frank

1

Я думаю, что вы можете испытывать проблемы с прописными буквами C в onClick. Попробуйте изменить его на onclick (все строчные буквы).

Смотрите этот вопрос: onclick or onClick?

Также вы можете иметь проблемы с доступом к event объект: Access global event object in Firefox

Но это дело вашего примера, я не думаю, что вы будете нуждаться в этом.

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

Смежные вопросы