Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » jQuery » Навигация вперед/назад при помощи клавиатуры

Навигация вперед/назад при помощи клавиатуры


     13.10.2012    клавиатура, клавиши, навигация по страницам    Все вопросы » jQuery    5071

вопрос
Подскажите пожалуйста как можно добавить в наш родной DLE возможность перехода по страницам назад вперед (теги [prev-link] [/prev-link] [next-link] [/next-link]) при помощи клавиатуры?

Ответил: ПафНутиЙ


Есть небольшой, но полезный плагин для отлавливания клавиатурных событий jquery.hotkeys
Вот так легко и непринужденно можно биндить клавиатурные сочетания:
<!DOCTYPE HTML>
<html>
<head>
    <meta charset="UTF-8">
    <title>хоткеи</title>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8/jquery.min.js"></script>
    <script>
        //Минимизированный плагин https://github.com/jeresig/jquery.hotkeys
        (function(jQuery){jQuery.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",
    144:"numlock",145:"scroll",191:"/",224:"meta"},shiftNums:{"`":"~",1:"!",2:"@",3:"#",4:"$",5:"%",6:"^",7:"&",8:"*",9:"(","0":")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"}};function keyHandler(handleObj){if(typeof handleObj.data!=="string")return;var origHandler=handleObj.handler,keys=handleObj.data.toLowerCase().split(" ");handleObj.handler=function(event){if(this!==event.target&&(/textarea|select/i.test(event.target.nodeName)||event.target.type==="text"))return;var special=
    event.type!=="keypress"&&jQuery.hotkeys.specialKeys[event.which],character=String.fromCharCode(event.which).toLowerCase(),key,modif="",possible={};if(event.altKey&&special!=="alt")modif+="alt+";if(event.ctrlKey&&special!=="ctrl")modif+="ctrl+";if(event.metaKey&&!event.ctrlKey&&special!=="meta")modif+="meta+";if(event.shiftKey&&special!=="shift")modif+="shift+";if(special)possible[modif+special]=true;else{possible[modif+character]=true;possible[modif+jQuery.hotkeys.shiftNums[character]]=true;if(modif===
    "shift+")possible[jQuery.hotkeys.shiftNums[character]]=true}for(var i=0,l=keys.length;i<l;i++)if(possible[keys[i]])return origHandler.apply(this,arguments)}}jQuery.each(["keydown","keyup","keypress"],function(){jQuery.event.special[this]={add:keyHandler}})})(jQuery);

        //Назначение хоткеев
        jQuery(function($) {
            $(document).bind('keydown', 'Ctrl+left', function (){$('#_Ctrl_left').addClass('dirty'); return false; });
            $(document).bind('keydown', 'Ctrl+up', function (){$('#_Ctrl_up').addClass('dirty'); return false; });
            $(document).bind('keydown', 'Ctrl+right', function (){$('#_Ctrl_right').addClass('dirty'); return false; });
        });
    </script>
    <style>
        .dirty {color: red;}
    </style>    
</head>

<body>
    <div id="_Ctrl_left" class="eventNotifier">Ctrl+left</div>
    <div id="_Ctrl_up" class="eventNotifier">Ctrl+up</div>
    <div id="_Ctrl_right" class="eventNotifier">Ctrl+right</div>
</body>
</html>

15 комментариев

ПафНутиЙ
Админ

ПафНутиЙ - 13 октября 2012 10:22 -

Собственно на сайт я тоже это уже прикрутил, постраничная навигация осуществляется по Ctrl + стрелка влево/вправо. (если не работает - почистить кеш браузера)

Каков вопрос - таков и ответ. Просто помните об этом.

doktorpull
Юзер

doktorpull - 11 декабря 2013 16:21 -

Не магу понять почему у меня не работают горячие клавиши=( Cсылка

gresius
Юзер

gresius - 14 ноября 2012 17:52 -

Поподробнее инструкцию можно что куда совать?! А то здесь не все DLE-гуру......

P.S. Как сделать чтобы без ctrl, просто стрелками переключать новости?!

promax
Юзер

promax - 14 ноября 2012 18:50 -

ну наверно :

 //Назначение хоткеев
        jQuery(function($) {
            $(document).bind( keydown', 'left', function (){$('.prev-link').trigger("click"); });
            $(document).bind('keydown', 'right', function (){$('.next-link').trigger("click"); });
        });


Сам не проверял )

promax
Юзер

promax - 14 ноября 2012 18:53 -

А
Цитата: gresius
Поподробнее инструкцию можно что куда совать?! А то здесь не все DLE-гуру......
А так если по делу , в отдельный файл весь плагин , подключите в шаблон , ну и вариант выше уже для dle . Могли б уже на примере данного сайт разобраться !

gresius
Юзер

gresius - 14 ноября 2012 19:30 -

вообщем (у меня по русскому языку двойка, я не знаю, что в русском языке не существует слова вообщем) я попробовал, вообще никак не работает:
впихнул кусок в <head>
и впихнул кусок в <body>
что сделал не так?!))

promax
Юзер

promax - 14 ноября 2012 20:10 -

в <head>
 <script>
        //Минимизированный плагин https://github.com/jeresig/jquery.hotkeys
        (function(jQuery){jQuery.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"
*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",
    144:"numlock",145:"scroll",191:"/",224:"meta"},shiftNums:{"`":"~",1:"!",2:"@",3:"#",4:"$",5:"%",6:"^",7:"&",8:"*",9:"(","0":")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"}};function keyHandler(handleObj){if(typeof handleObj.data!=="string")return;var origHandler=handleObj.handler,keys=handleObj.data.toLowerCase().split(" ");handleObj.handler=function(event){if(this!==event.target&&(/textarea|select/i.test(event.target.nodeName)||event.target.type==="text"))return;var special=
    event.type!=="keypress"&&jQuery.hotkeys.specialKeys[event.which],character=String.fromCharCode(event.which).toLowerCase(),key,modif="",possible={};if(event.altKey&&special!=="alt")modif+="alt+";if(event.ctrlKey&&special!=="ctrl")modif+="ctrl+";if(event.metaKey&&!event.ctrlKey&&special!=="meta")modif+="meta+";if(event.shiftKey&&special!=="shift")modif+="shift+";if(special)possible[modif+special]=true;else{possible[modif+character]=true;possible[modif+jQuery.hotkeys.shiftNums[character]]=true;if(modif===
    "shift+")possible[jQuery.hotkeys.shiftNums[character]]=true}for(var i=0,l=keys.length;i<l;i++)if(possible[keys[i]])return origHandler.apply(this,arguments)}}jQuery.each(["keydown","keyup","keypress"],function(){jQuery.event.special[this]={add:keyHandler}})})(jQuery);

        //Назначение хоткеев
        jQuery(function($) {
            $(document).bind( keydown', 'left', function (){$('.prev-link').trigger("click"); });
            $(document).bind('keydown', 'right', function (){$('.next-link').trigger("click"); });
        });
    </script>
все !!! либо в отдельный файл например hotkeys.js

promax
Юзер

promax - 14 ноября 2012 20:11 -

у меня ошибочка
jQuery(function($) {
            $(document).bind( 'keydown', 'left', function (){$('.prev-link').trigger("click"); });
кавычку забыл

gresius
Юзер

gresius - 14 ноября 2012 21:22 -

не работает, никак)))

promax
Юзер

promax - 14 ноября 2012 21:38 -

ссылку сайта в лс

hatchees
Юзер

hatchees - 10 декабря 2012 23:50 -

Зачем грузить сайт лишними скриптами?

gresius
Юзер

gresius - 11 декабря 2012 00:16 -

чтобы он был интерактивным!

doktorpull
Юзер

doktorpull - 9 декабря 2013 15:09 -

Что то не реагирует, на нажатие клавиатуры

jQuery(function($) {
            $(document).bind( 'keydown', 'left', function (){$('.prev-link').trigger("click"); });


Помогите кто нибудь, добрые люди=), не хочет переходить по ссылке по нажатию на кваливу.

Roman.NMSK
Юзер

Roman.NMSK - 25 марта 2014 13:39 -

во. нашел вот такой небольшой снипет. проверил - работает :)
$(document).ready(function() {
    $('body').bind('keypress', function(e) {
        if(e.keyCode==37 || e.keyCode==52){
            //alert('left');
            document.location.href='http://link_left';
        }
        if(e.keyCode==39 || e.keyCode==54){
            //alert('right');
            document.location.href='http://link_right';
        }
    });
});

gresius
Юзер

gresius - 25 марта 2014 13:45 -

гуглим "jquery навигация стрелками", всё есть и довольно просто ставится...

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх