Отключить навигацию с помощью клавиатуры в jQuery

Мы используем довольно фото:

http://www.no-margin-for-errors.com/projects/prettyphoto-jquery-lightbox-clone/ Для нашего портфолио. Это позволяет нам показывать видео, изображение или SWF. Когда мы отображаем SWF-игру, в которой используются клавиши со стрелками, она конфликтует с навигацией prettyPhoto. Посмотрите этот пример игры, которую мы добавили:

http://www.letsdesign.co.uk/#!prettyPhoto/0/ Это еще хуже в IE на ПК. однако в игру можно играть на Firefox для Mac, это состояние, которое мы хотели бы видеть во всех браузерах.

Мы хотели бы найти способ отключить навигацию в PrettyPhoto (с помощью клавиш со стрелками), чтобы она не конфликтовала с какими-либо элементами управления в игре. У нас есть другие игры, которые нужно добавить, но мы не можем их добавить, пока это не будет исправлено. У кого-нибудь есть решение? Заранее спасибо.


person Lets Design    schedule 01.10.2011    source источник


Ответы (4)


После попытки отключить сочетания клавиш, в том числе (влево и вправо), установив для параметра «keyboard_shortcuts» значение false, я прибегнул к переопределению метода changePage и вызвал метод из метода changepicturecallback. Я считаю, что это позволяет легко выбирать различные варианты использования prettyPhoto без необходимости редактирования основных файлов (что я бы никогда не рекомендовал).

$("a[rel^='prettyPhoto']").prettyPhoto({
  changepicturecallback: function(){
    $.prettyPhoto.changePage = function(){};
  },
});

Взгляните на параметры prettyPhoto, они очень эффективны при правильном сочетании.

person raptor    schedule 25.11.2013

В файле JavaScript Prettyphoto установите для параметра keyboard_shortcuts значение false.

person prayag verma    schedule 25.01.2012
comment
Это решение не работает для меня. Я использую следующий код: <script> jQuery(document).ready(function($){ $("a.buy-this[rel^='prettyPhoto']").prettyPhoto({ keyboard_shortcuts: false, custom_markup: '<div id="" style="width:650px; height:500px"><?php echo $form; ?></div>', theme: 'light_rounded', social_tools: '', changepicturecallback: function(){ initialize(); } }); }); </script> - person kdev; 20.11.2012

Я нашел действительно хакерский способ отключить функциональность клавиши со стрелкой. В моем файле jquery.prettyPhoto.js я просто закомментировал $.prettyPhoto.changePage('previous'); и $.prettyPhoto.changePage('next');.

Это будет означать, что стрелочная навигация вообще не работает, но мне это все равно не нужно для моего проекта.

person kdev    schedule 20.11.2012

Есть баг, к сожалению. Я изменил код, и теперь он отлично работает.

Вот ошибка. Есть такой кусок кода:

switch(t.keyCode){case 37:e.prettyPhoto.changePage("previous");t.preventDefault();break;case 39:e.prettyPhoto.changePage("next");t.preventDefault();break;case 27:if(!settings.modal)e.prettyPhoto.close();t.preventDefault();break

измените это на следующее

if (settings.keyboard_shortcuts) { switch(t.keyCode){case 37:e.prettyPhoto.changePage("previous");t.preventDefault();break;case 39:e.prettyPhoto.changePage("next");t.preventDefault();break;case 27:if(!settings.modal)e.prettyPhoto.close();t.preventDefault();break}

Теперь авторская настройка под названием keyboard_shortcuts будет отлично работать, если вы установите для нее значение false.

Это справедливо для минимизированного кода, я не проверял, существует ли ошибка в не минимизированном коде (если он есть).

Удачи!

Джордж

person OrangeG    schedule 29.10.2014