IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

script greasemonkey, besoin de conseils


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut script greasemonkey, besoin de conseils
    Salut a tous!

    je suis tout nouveau sur ce forum.
    j'ai des connaissances en HTML (ou XHTML) et CSS.
    j'ai decouvert il y a quelques moment le languages javascript et ce qu'il pouvait faire. j'ai donc commencé a m'y interessé.
    puis, ayant, dans le passé, un script greasemonkey pour ogame, j'ai decidé de me lancer dans mon propre script pour un autre jeu.

    je ne connais pas grand chose dans les fonctionnalités de greasemonkey et je n'ai trouvé de documentation complete qu'en anglais (que je suis en train de dechiffrer).

    ce jeu peut se jouer soit a la souris, soit au clavier.
    on peut se deplacer sur la carte au clavier via les touches Z,Q,S,D et j'aimerais rajouter des touches pour différentes actions.

    j'ai fouillé dans les scripts utilisés et j'ai trouvé ceci (je ne met pas tout le script):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    function deplace_clavier(event)
    {
    var element = $(Event.element(event));
    switch(event.keyCode){
    		case 81: //Q
    		if (clavier_type == "azerty") move_to('gauche'); 
    		break;
    		case 65: //A
    		if (clavier_type == "qwerty") move_to('gauche'); 
    		break;
    		case 90: //Z
    		if (clavier_type == "azerty") move_to('haut');
    		if (clavier_type == "qwertz") move_to('gauche');
    		break;
    		case 87: //W
    		if (clavier_type == "qwerty" || clavier_type == "qwertz") move_to('haut'); 
    		break;
    		case 68: //D
    		move_to('droite'); 
    		break; //S
    		case 83:move_to('bas'); 
    		break;
    		default: null;
    		}
    }
    j'ai donc modifié pour rajouter mes propres touches:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    function deplace_clavier(event)
    {
    var element = $(Event.element(event));
    switch(event.keyCode){
    	// ======================= AJOUT ===========================
    		case 69: //E: prendre une potion
    		act = "popo"
    		action(act);
    		break;
    		case 65: //A: actualiser la page
    		depl(0);
    		break;
    	// ======================= /AJOUT ===========================
    		case 81: //Q
    		if (clavier_type == "azerty") move_to('gauche'); 
    		break;
    		case 65: //A
    		if (clavier_type == "qwerty") move_to('gauche'); 
    		break;
    		case 90: //Z
    		if (clavier_type == "azerty") move_to('haut');
    		if (clavier_type == "qwertz") move_to('gauche');
    		break;
    		case 87: //W
    		if (clavier_type == "qwerty" || clavier_type == "qwertz") move_to('haut'); 
    		break;
    		case 68: //D
    		move_to('droite'); 
    		break; //S
    		case 83:move_to('bas'); 
    		break;
    		default: null;
    		}
    mais, maintenant, un probleme se pose: comment changer ça dans la page?

    j'ai donc fais un userscript pour modifier la balise script changer la source du script pour changer l'original avec le modifié.
    vu que la balise script a modifier na pas d'Id, j'ai utilisé ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function change(){
      document.getElementsByTagName("script")[4].src = "Adresse_du script_modifié";
    }
    setTimeout(change(),3000);
    pourquoi le setTimeout?
    j'ai remarqué que le userscript (sous opera ou FF) se lançait avant le chargement de la page et qu'il ne trouvait pas de balise script.

    une fois le script enregistré et la page web chargée, j'ai regardé sous firebug si la modif était faite.
    c'était le cas mais lorsque j'appuyais sur A, rien ne se passait.

    pourriez-vous m'indiquer pourquoi?
    est-ce parceque la balise script est dans le <body> ?

    merci de vos réponses!

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    JavaScript est sensé pouvoir influer sur le contenu de la page, il est donc important de pouvoir être certain du moment auquel le script est exécuté et ce que contient la page à ce moment précis (d'autant plus avec les immondes document.write ) du coup, les scripts JavaScript sont chargés de façon synchrone (contrairement aux feuilles de style par exemple (imagine d'insérer des div en js alors que le contenu HTML est en train de s'afficher, le résultat serait assez aléatoire...)
    C'est d'ailleurs pour cette raison que certains préconisent de placer le JavaScript en fin de document (juste avant la balise </body>) pour permettre au reste du contenu dit remplacé (par exemple les images) de se charger avant.
    Ceci dit, ton problème vient probablement du fait que l'ordre de tes fichiers JavaScript doit être mal approprié

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    merci pour ta réponse.
    en fait, je ne change pas l'emplacement du script. je ne fais changer que la source de ce dernier après que la page soit chargée. je ne pense donc pas que le probleme vienne de l'emplacement du script dans la page.
    j'ai plutot l'impression que le navigateur a deja chagé le script original et que ma modification ne modifie que le code html de la page (cad, je change le lien mais le navigateur ne charge pas le script modifié) mais peut-etre que je me trompe.


    une idée a germé dans mon esprit:
    si je mettais le script modifié dans mon userscript et que je bloquais le chargement du script original avec adblock, cela marcherait-il?
    j'ai essayé mais rien ne se passe, le script ne fonctionne pas. est-ce normal?

Discussions similaires

  1. [RegEx] Besoin de conseils pour script PHP/MySQL.
    Par ABandApart dans le forum Langage
    Réponses: 0
    Dernier message: 05/08/2010, 12h27
  2. Besoin de conseil script d'administration
    Par szambaux dans le forum Administration système
    Réponses: 4
    Dernier message: 24/01/2008, 14h06
  3. Shell - premier script : besoin de conseils
    Par Invité dans le forum Linux
    Réponses: 1
    Dernier message: 28/10/2007, 20h42
  4. Réponses: 3
    Dernier message: 24/12/2004, 12h21
  5. Réponses: 1
    Dernier message: 06/01/2003, 07h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo