Поддержка средних кликов на моем лайтбоксе Fancybox

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

У кого-нибудь есть фрагмент или метод, которым они могут поделиться?

В противном случае метод, который я собирался попробовать, заключался в том, чтобы просто добавить к ссылке обычный href, а затем добавить обработчик щелчка, который отменяет действие по умолчанию при щелчке левой кнопкой мыши. Я думаю, что это сработает, но я не уверен, что, честно говоря, было проще задать вопрос, чем написать его и протестировать в 14 комбинациях браузера и ОС, которые я должен поддерживать.


person Shane H    schedule 07.07.2011    source источник
comment
Я, например, всегда ненавидел ссылки Javascript для всплывающих окон и т. д., которые нельзя щелкнуть средней кнопкой мыши. Я надеюсь искоренить это поведение на нашем сайте в ближайшее время.   -  person Shane H    schedule 07.07.2011


Ответы (1)


Наконец-то я нашел время, чтобы решить это, и это было довольно легко:

Вот как я это сделал, используя jQuery и FancyBox:

Назначьте нужной ссылке класс has-overlay и настраиваемый атрибут, который сообщит ей, что следует загружать в оверлее

<a href="/login"class="has-overlay" overlay="#loginform">Login</a>

Убедитесь, что у вас есть доступный код наложения (это стандартный набор FancyBox)

<div class="hidden" id="loginform"> <!-- Form Goes Here --> </div>

И поместите этот фрагмент в свое событие готовности:

    $('.has-overlay').bind('click', function(e) {
        var overlay = $(this).attr('overlay');
        $('<a href="' + overlay + '"></a>').fancybox().trigger('click');
        return false;
    })

Когда пользователь щелкнет левой кнопкой мыши, будет вызван этот обработчик щелчка. Он загрузит оверлей, а затем вернет «false», поэтому браузер не будет следовать href в ссылке.

Когда пользователь щелкает средней или правой кнопкой мыши, обработчик щелчка не срабатывает и работает как обычная ссылка.

person Shane H    schedule 21.07.2011