Средние клики поддержки на моем лайтбоксе Fancybox - PullRequest
1 голос
/ 07 июля 2011

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

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

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

1 Ответ

1 голос
/ 21 июля 2011

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

Вот как я это сделал, используя 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;
    })

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

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

...