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 :

Evénement "onclick" qui ne se déclenche pas sur un gadget windows


Sujet :

JavaScript

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien Qualité Logiciel
    Inscrit en
    Janvier 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Qualité Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 44
    Points : 45
    Points
    45
    Par défaut Evénement "onclick" qui ne se déclenche pas sur un gadget windows
    Bonjour !

    Je suis entrain de créer un gadget Windows pour gérer les services Windows afin de me faciliter la vie au boulot.

    Le principe c'est d'avoir dans un tableau une liste de service avec :
    - le nom
    - l'état (démarrer ou arrêter)
    - action (bouton pour démarrer ou arrêter)

    Voici donc la page html :
    Code html : 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
    <html>
    	<style>
                    body
                    {
                            width:300;
                            height:200;
                    }
            </style>
     
    	<head>
    		<script src="js/Services.js" language="JavaScript"></script>					
    	</head>
     
    	<body>
    		<table id="tableau" border="1" CELLSPACING=1>
    			<thead>
    				<tr>
    					<td style="width:200" align="center">Nom</td>
    					<td style="width:50" align="center">Etat</td>
    					<td style="width:50" align="center">Action</td>
    				</tr>
    			</thead>	
    		</table>
     
    		<script language="JavaScript">
    			SearchServices();
    		</script>
     
    		<input type="button" align="right" onclick="SearchServices();" value="Actualiser"/>
    	</body>
    </html>

    En gros j'ai un tableau de 3 colonnes, puis j'appelle la fonction SearchServices() pour remplir le tableau, et un bouton Actualiser qui appelle aussi la fonction SearchServices().

    Coté JavaScript, j'ai un fichier Services.js avec la fonction SearchServices() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Vider le tableau et rechercher les services
    function SearchServices()
    {
    	DeleteRows();
    	ServicesList();
    }
    DeleteRows() supprime toutes les lignes du tableau (pas de souci de ce coté).
    Par contre voici la fonction ServicesList() :
    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
    34
    function ServicesList()
    {
    	// Initialisation de la commande dos pour la recherche de service
    	var wsShell = new ActiveXObject("WScript.Shell");
    	var cmd = wsShell.Exec("cmd /c sc query state= all");
    	var line;
    	var serviceName = "";
    	var id = 1;
     
    	// Pour chaque service trouvé
    	while (!cmd.StdOut.AtEndOfStream)
    	{
    		line = cmd.StdOut.ReadLine();
    		// Si on est sur "SERVICE_NAME"
    		if (line.substring(0, 12) == "SERVICE_NAME")
    		{			
    			// Si le nom du service commence par "IS" ou "IP"
    			if ((line.substring(14, 19) == "IS-JA")) //|| (line.substring(14, 17) == "IP."))
    			{
    				serviceName = line.substring(14);
    			}
    		}
    		if (line.substring(8, 13) == "STATE")
    		{
    			if (serviceName != "")
    			{
    				// Ajouter le service dans le tableau
    				AddRow(id, serviceName, line.substring(29, 30));
    				id += 1;
    				serviceName = "";
    			}
    		}		
    	}
    }
    Elle permet, en passant par une ligne de commande, de retrouver tous les services Windows, puis je récupère que les services qui commence par "IS-JA" et je l'ajoute à mon tableau grâce à la fonction AddRow(id, name, etat) :
    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
    function AddRow(id, name, etat)
    {
    	var tableau = document.getElementById("tableau");
    	// Ajout d'une nouvelle ligne
    	var ligne = tableau.insertRow(-1);
    	// Initialiser les cellules
    	var colonne1 = ligne.insertCell(0);
    	var colonne2 = ligne.insertCell(1);
    	var colonne3 = ligne.insertCell(2);
    	// Initialiser le bouton d'Action
    	var button = document.createElement("input");
        button.type = "button";
    	button.name = "button" + id;
     
    	// Remplir la 1ére cellule avec le nom du service
    	colonne1.innerHTML += name;
    	// Remplir la 2éme et 3éme cellule suivant l'état du service	
    	if (etat == 1)
    	{
    		colonne2.innerHTML += "Arrêter";
    		button.value = "Démarrer";
    		button.setAttribute("onclick", "Start(" + id + ")");
    	}
    	else 
    	{
    		colonne2.innerHTML += "Démarrer";
    		button.value = "Arrêter";
    		button.setAttribute("onclick", "Stop(" + id + ")");
    	}
    	// Insérer le bouton dans le tableau
    	colonne3.appendChild(button);
    }
    Ici j'ajoute donc une nouvelle ligne et remplit les 3 colonnes.
    Par contre pour la colonne Action (3éme colonne), j'ajoute un bouton avec un événement "onclick" qui va soit exécuter la fonction Start(id) ou Stop(id).

    Si je lance la page .html sur IE => tout fonctionne nikel, j'ai la liste des services et je peux peux les arrêter et démarrer.

    Mais quand je transforme le tout en .gadget (zip du html, js, ...) le gadget s’exécute correctement (j'ai la liste des services), mais par contre l'événement "onclick" des boutons Démarrer et Arrêter du tableau ne fonctionne pas :-/
    Par contre le bouton Actualiser en dessous du tableau fonctionne bien...

    Du coup je ne sais que faire pour résoudre ce souci, et je ne connais pas très bien le JavaScript (j'ai commencé à apprendre Samedi :-S), du coup j'ai surement fait une erreur

    Je vous remercie déjà d'avoir lu mon post en espérant avoir été le plus clair possible.

  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 : 53
    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
    L'API JavaScript Windows n'est pas la même que le DOM du navigateur.
    Donc ce qui fonctionne sur un site Web a peu de chances de fonctionner sur un OS.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Membre du Club
    Homme Profil pro
    Technicien Qualité Logiciel
    Inscrit en
    Janvier 2010
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Technicien Qualité Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 44
    Points : 45
    Points
    45
    Par défaut
    Bonjour Bovino et je te remercie pour ta réponse car en effet je ne savais pas qu'il y avait une différence (en plus j'ai fait tout le dev depuis le navigateur car plus simple pour voir le résultat) :-/

    Je posterais une solution si j'en trouve une ;-)

    Edit : J'ai trouvé une solution, dans la fonction AddRow(id, name, etat) j'ai modifié la façon de câbler l'event "onclick" de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    button.setAttribute("onclick", "Start(" + id + ")");
    en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    button.onclick = function onclick(event) { Start(id) };

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Evènement qui ne se déclenche pas
    Par max.lille dans le forum Langage
    Réponses: 8
    Dernier message: 09/05/2006, 15h46
  2. [trigger] ... qui ne se déclenche pas
    Par bozo dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 14/01/2004, 11h31

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