Bonjour à vous, Je relance un sujet car le précédent n'était pas forcément clair, précis etc. Mon problème avance, et a été identifié plus clairement. Donc j'explique un peu plus clairement. - Utilisation de Keynav pour la navigation au clavier (Identique à la navigation avec une télécommande d'une Box) - Les liens ont tous la class "Keynav_box" qui permet le déclenchement du Jquery. - Je peux sélectionner les liens, enfin boutons, les liens, etc via les flèches du clavier, donc Keynav est bien reconnu. - Un programme est lancé au démarrage et se nomme Mixicom, elle intègre un #start à la fin de l'url (exemple : www.example.com?needconnect=false#start ) - Lorsqu'on appuie sur la touche "Entrée" pour valider le "clic" et donc "activer le lien" dans le but de changer de page, j'ai l'erreur suivante : undefinied function, donc en gros il ne reconnait pas mon "lien" Est-ce que quelqu'un a une idée pour intégrer cette notion de #start et éviter ainsi que j'ai cette erreur de lien ? Donc en gros je reformule ma demande et mon problème : **"Je veux pouvoir changer de page en appuie sur la touchée Entrée après avoir sélectionné un lien, et sans avoir cette erreur de fonction non définie".** si quelqu'un a une solution, je suis preneur à 20 000% Controller : [code] <?php /**

  • Description of GamesController
  • Permet de lister les jeux, de s'abonner aux jeux, ou se désabonner
  • @author Christophe
    */
    class GamesController extends AppController{
    //Fonction listant l'ensemble des jeux que le client a acheté
    function liste(){
    //Vérification si l'utilisateur est connecté ou non.
    // S'il ne l'est pas, redirection vers index.php
    // $user_id = $this->Auth->user('id'); // if(!$user_id){ // $this->redirect('/?needconnect=false'); // die(); // } //Sert pour l'affichage du nom du joueur sur la page en haut à droite $nomDuJoueur = $this->Auth->user('username'); //Chargement des modèles $this->loadModel('Games'); $this->loadModel('Games_users'); $this->loadModel('Experiences_users'); $listeDesJeuxParUtilisateurs = $this->Games->find('all',array('conditions'=>array('Games.id_user'=>'1'))); //Transmissions liste des jeux à la vue $this->set('nomDuJoueur',$nomDuJoueur); $this->set('listeDesJeuxParUtilisateurs',$listeDesJeuxParUtilisateurs); } }[/code] Vue qui comporte le lien "games" => "liste" : [code]
  • <?php echo $this->Html->image("frames/btn-jouer.png", array( "alt" => "Jouer !", 'url' => array('controller' => 'games', 'action' => 'liste','?'=>'needconnect=false') ));?>

[/code] Code Jquery Keynav (plugin) : [code]/* * Keynav - jQuery Keyboard Navigation plugin * * Copyright (c) 2013 Nick Ostrovsky * * Licensed under the MIT license: * http://www.opensource.org/licenses/mit-license.php * * Project home: * http://www.firedev.com/jquery.keynav * * Version: 0.1 * */ ;(function($, window, document, undefined) { $.fn.keynav = function(checkNav) { var elements = this; var matrix = document.getSelection().toString();; var x; var y; var current = this.filter('.selected'); var keyNavigationDisabled=false; if (current.length == 0) current = this.first(); current.addClass('selected'); function update() { var i=0; var row = Array(); var j = -1; var oldtop = false; var m=Array(); elements.each(function(){ if (!oldtop) oldtop = this.offsetTop; newtop=this.offsetTop; if (newtop != oldtop) { oldtop=newtop; m*=row; row = Array(); i++; j=0; row[j]=this; } else { j++; row[j]=this; } }); m*=row; matrix = m; coordinates=findCurrent(); x=coordinates[0]; y=coordinates[1]; return matrix; } function findCurrent() { i=0; j=0; found = false; try { for (i=0; i<matrix.length i row="matrix;" for j if throw catch found="[i,j]" return function setcurrent>=matrix.length) i=0;
if (j=matrix
.length) j=0;
current.removeClass('selected');
current = $(matrix*[j]);
current.addClass('selected');
x=i;
y=j;
}

    $(window).bind("resize", function(event) {
        update();
    });

    $(document).ready(function() {
        update();
    });

    $(document).keydown(function(e){
        if (checkNav &amp;&amp; checkNav()) return;
        if (e.keyCode == 37) {
            // left
            setCurrent(x,y-1);
            e.preventDefault();
        } else if (e.keyCode == 38) {
            // up
            setCurrent(x-1,y);
            e.preventDefault();
        } else if (e.keyCode == 39) {
            // right
            setCurrent(x,y+1);
            e.preventDefault();
        } else if (e.keyCode == 40) {
            // down
            setCurrent(x+1,y);
            e.preventDefault();
        } else if (e.keyCode == 13) {
            window.location = current.attr('href');
            e.preventDefault();
        }
    });

    return this;
}

})(jQuery, window, document);
[/code]

Code Jquery Mixicom (Normalement il n'a pas d'intérêt dans mon problème mais je le mets à disposition si jamais):
[code] var friendsArray = new Array();
window.onFacebookStatus = function(p_message) {
if(p_message.content.split('redirect').length==1)
{
$("#facebook").html('Compte facebook de '+p_message.content.split('title="')[1].split('"')[0]);
// On se connecte
window.setStatus();
// On récupère la liste des amis
$mx.sendMessage($mx.Message('i', _SUB, 'facebook/friends', _ALL,_BK),{context:window,fun:'onFacebookFriends'});
}
else
{
$("#facebook").html('<a href="'+p_message.content.split('url=">Cliquez pour relier votre compte facebook</a>');
}
};
window.onFacebookFriends = function(p_message) {
var out = '<div>Friends</div>';
var data = pmessage.content.split('<content for i="1,j=data.length;i<j;++i)" out>'+data.split('title="')[1].split('"')[0]+' ('+data.split('state="')[1].split('"')[0]+')</content></matrix.length>
'; } $("#friends").html(out); }; window.setStatus = function() { $mx._sendMessage($mx.Message('i_', _SUB, 'facebook/set_status', _ALL,'<content state="connected"></content>'),{context:window,fun:'onStatusDone'}); }; window.onStatusDone = function() { $mx._sendMessage($mx.Message('i_', _UNSUB, 'facebook/set_status', _ALL,_BK),{context:window,fun:'onStatusDone'}); setTimeout(window.setStatus,130000); }; // Pour se delogger. p_type vaut facebook ou twitter ou mail... window.logout = function(p_type) { $mx._sendMessage($mx.Message('l_', _SUB, p_type+'/uninstall', _ALL,_BK),{context:this,fun:'onUninstall'}); }; window.onUninstall = function(p_message) { $mx._sendMessage($mx.Message('l_', _UNSUB, p_message.path, _ALL,_BK),{context:this,fun:'onUninstall'}); }; window.inviteFriend = function(authorType,roomId,friendType,friendId) { $mx._sendMessage($mx.Message('i\
', _SUB, 'chat_room/invite_to_room/'+authorType+'/'+roomId, _ALL,'<content type="'+friendType+'" name="'+friendId+'"></content>'),{context:this,fun:'onFriendInvited'}); }; window.onTwitterStatus = function(p_message) { if(p_message.content.split('redirect').length==1) { $("#twitter").html('Compte twitter ok'); } else { $("#twitter").html(' Cliquez pour relier votre compte twitter; } }; var curRoom = null; window.joinRoom = function(p_path) { if(curRoom != null) { $mx._sendMessage($mx.Message('j_', _UNSUB, curRoom, _ALL,_BK),{context:this,fun:'onRoomData'}); } curRoom = p_path; $mx._sendMessage($mx.Message('j_', _SUB, curRoom, _ALL,_BK),{context:this,fun:'onRoomData'}); $("#roomInput").show(); } window.onFriendInvited = function(p_message) { $mx._sendMessage($mx.Message('i_', _UNSUB, p_message.path, _ALL,_BK),{context:this,fun:'onFriendInvited'}); }; window.inviteFriend = function(authorType,roomId,friendType,friendId) { $mx._sendMessage($mx.Message('i_', _SUB, 'chat_room/invite_to_room/'+authorType+'/'+roomId, _ALL,'<content type="'+friendType+'" name="'+friendId+'"></content>'),{context:this,fun:'onFriendInvited'}); }; window.onRoomData = function(p_message) { var data = p_message.content.split('<content out="curRoom+'<br/">';
for(var i=1,j=data.length;i<j out>'+data.split('title="')[1].split('"')[0]+'';
}
$("#room").html(out);
}
window.onRooms = function(p_message) {
var rooms = p_message.content.split('<content out="Rooms<br/>" for i="1,j=rooms.length;i<j;++i)"><a href="javascript:window.joinRoom(%5C''+rooms
.split('path=">'+rooms*.split('title="')[1].split('"')[0]+'</a>';
}
$("#rooms").html(out);
};
window.onroomcreated = function(p_message) {
$("#createRoom").attr("value","Create room");
$mx.sendMessage($mx.Message('c', _UNSUB, 'chat_room/create_room', _ALL,''),{context:this,fun:'onroomcreated'});
};
window.ondataposted = function(p_message) {
$("#postToRoom").attr("value","Post");
$mx.sendMessage($mx.Message('p', _UNSUB, 'chat_room/post_to_room/facebook/'+curRoom.split('my_rooms/')[1], _ALL,''),{context:this,fun:'ondataposted'});
};
var $mx;
window.onReady = function(p_id, p_mail, p_device, p_deviceId,p_devicePhoto, p_avatar) {
$mx = window.mixgum;

  $mx.KeyListener.getInstance().setPreventMode(false);

  $mx._sendMessage($mx.Message('f_', _SUB, 'facebook/status', _ALL,_BK),{context:this,fun:'onFacebookStatus'});
  $mx._sendMessage($mx.Message('t_', _SUB, 'twitter/status', _ALL,_BK),{context:this,fun:'onTwitterStatus'});
  $mx._sendMessage($mx.Message('r_', _SUB, 'facebook/my_rooms', _ALL,_BK),{context:this,fun:'onRooms'});

  $("#roomInput").hide();
  $("#postToRoom").click(function(event) {
    $("#postToRoom").attr("value","Posting...");
    event.preventDefault();
    $mx._sendMessage($mx.Message('p_', _SUB, 'chat_room/post_to_room/facebook/'+curRoom.split('my_rooms/')[1], _ALL,'<content title="'+$("></content>'),{context:window,fun:'ondataposted'});
  });

  $("#createRoom").click(function(event) {
    $("#createRoom").attr("value","Creating...");
    event.preventDefault();
    $mx._sendMessage($mx.Message('c_', _SUB, 'chat_room/create_room', _ALL,'<content name="'+$(" type="facebook"></content>'),{context:window,fun:'onroomcreated'});
  });

window.onReady = function(p_id, p_mail, p_device, p_deviceId,p_devicePhoto, p_avatar) {
  $mx = window.mixgum;

  $mx.KeyListener.getInstance().setPreventMode(false);
};
};[/code]</content></j></content>

1 réponse


christophe4427
Auteur
Réponse acceptée

Bon j'ai trouvé, ça venait de là :

$('#navigation a').keynav();
      $('.nav_holder input').keynav();

Pourquoi, j'en sais rien, mais j'ai supprimé ça et zou c'est bon.

Merci quand même :)