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 :

Code javascript à exécuter en ligne de commande Linux


Sujet :

JavaScript

  1. #1
    Membre très actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 371
    Par défaut Code javascript à exécuter en ligne de commande Linux
    bonjour,

    Dans le code source d''une page web est écrit un partie en javascript:
    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
     
    <script language="javascript">
    	time = 15;
     
    	function download() {
    		if (time == 0) { 
    			document.getElementById("dl").innerHTML='<font size="3">Veuillez cliquer ci-dessous pour télécharger <b>preisle2.zip</b></font><br><br><form method="POST" action="http://............"><input type="submit" style="font: 9pt verdana" value="Téléchargez votre fichier"></form><br><button style=\"font: 9pt verdana\" onclick=\"dropboxSave(\'http://..............', \'preisle2.zip\')\">Enregistrer sur Dropbox</button>';
    		}
    		if (time > 0) { 
    			document.getElementById("dl").innerHTML='<font size="3">Lisez le message de notre sponsor ci-dessous en attendant que votre lien de téléchargement apparaisse dans ' + time + ' secondes</font>';
     
    			setTimeout('download()',1000);
    		}
    		time--;
    	}
     
    	download();
     
    	function dropboxSave(url, filename) {
    		Dropbox.save(url, filename);
    	}
    	</script>
    cette page offre un bouton de téléchargement d'un fichier preisle2.zip en cliquant avec la souris.

    Au lieu de cliquer avec la souris sur ce bouton de téléchargement,je souhaite le faire en ligne de commande Linux(Ubuntu) en utilisant la ligne de code inclue dans ce script:
    Dropbox.save(\'http://...............', \'preisle2.zip\');
    ou bien:
    Dropbox.save(http://...............,preisle2.zip);
    ou bien:
    dropboxSave(http://...............,preisle2.zip);

    c'est-à-dire en créant un fichier test.js contenant une de ces lignes puis dans le terminal Linux:> ./test.js
    Mais cela ne marche pas!

    Pouvez-vous m'aider?

    merci

  2. #2
    Membre extrêmement actif
    Avatar de Sodium
    Femme Profil pro
    Développeuse web
    Inscrit en
    Avril 2014
    Messages
    2 324
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeuse web

    Informations forums :
    Inscription : Avril 2014
    Messages : 2 324
    Billets dans le blog
    1
    Par défaut
    Évidemment que ça ne marche pas, une ligne de commande n'est pas capable d'exécuter du JavaScript client tel quel.

  3. #3
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 659
    Billets dans le blog
    1
    Par défaut
    Très constructif ...

    il existe une API dropbox pour sauvegarder ...

    https://www.dropbox.com/developers/saver
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  4. #4
    Membre émérite

    Homme Profil pro
    linux, pascal, HTML
    Inscrit en
    Mars 2002
    Messages
    649
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : Belgique

    Informations professionnelles :
    Activité : linux, pascal, HTML
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Billets dans le blog
    1
    Par défaut
    Le problème risque d'être compliqué car on accède à ses fichiers à travers une session sécurisée !
    Pour le javascript en console, on peut utiliser node.js qui une fois installé permet de tester un fichier javasscipt avec

  5. #5
    Membre très actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 371
    Par défaut
    voici ce que me donne le terminal Linux après:
    >node file.js
    /home/user/Documents/file.js:9
    document.getElementById("dl").innerHTML='<font size="3">Lisez le message de notre sponsor ci-dessous en attendant que votre lien de téléchargement apparaisse dans ' + time + ' secondes</font>';
    ^

    ReferenceError: document is not defined
    at download (/home/user/Documents/file.js:9:4)
    at Object.<anonymous> (/home/user/Documents/file.js:16:2)
    at Module._compile (module.js:410:26)
    at Object.Module._extensions..js (module.js:417:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Function.Module.runMain (module.js:442:10)
    at startup (node.js:136:18)
    at node.js:966:3
    Peut-on m'aider?

  6. #6
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Ce n'est pas possible de faire ça.

    Soit ton code est exécuté par Node.js auquel cas il ne peut pas utiliser l'API DOM, soit il s'exécute dans un navigateur auquel cas tu ne peux pas l'exécuter en ligne de commande.

  7. #7
    Membre très actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 371
    Par défaut
    alors comment exécuter les lignes de ce fichier file sans passer par un navigateur?

  8. #8
    Expert confirmé
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 419
    Par défaut
    Tu ne peux pas. Tu utilises l'API DOM (via document.getElementById("dl").innerHTML) tu es donc obligé d'exécuter ça dans un navigateur.

  9. #9
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Bonjour tabkelm,
    tu essayes d’enfoncer des clous avec un tournevis. Les navigateurs, et le moteur JS qui vient avec, posent des barrières de sécurité qui restreignent l’accès au système de fichier et le lancement d’exécutables.
    De l’autre côté des barrières, l’environnement Linux offre un shell mais n’a pas par défaut de moteur JavaScript, à moins que l’utilisateur l’ait installé lui-même.

    Pour moi il y a deux pistes :
    1. Suivre la remarque de SpaceFrog et utiliser l’API Dropbox ;
    2. Livrer le zip avec un script .sh qui fera les opérations nécessaires.


    Et puisqu’on est dans le forum JavaScript, j’en profite pour dire qu’il y a beaucoup de choses obsolètes ou déconseillées dans ton code :
    • l’attribut language
    • les variables non déclarées
    • la balise <font>
    • le passage de chaînes à setTimeout
    • l’attribut onclick
    • innerHTML (pourquoi)


    Voici un équivalent de ton code utilisant deux trois choses utiles à savoir :


    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
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    <style>
     
    #dl {
      font-size: medium;
    }
     
    #dl p {
      margin-bottom: 2em; /* à ajuster, remplace les <br> */
    }
     
    #dl button, #dl input[type=submit] {
      font: 9pt Verdana, sans-serif;
    }
     
    </style>
    <script> "use strict";
     
    let time = 15;
    let dl;
     
    function download() {
      // si le décomte est terminé, pas la peine de continuer
      if (time > 0) {
        // inscrit le timer au début de la fonction pour une meilleure précision
        setTimeout(download, 1000);
      }
     
      if (!dl) {
        // au premier appel, stocke l’élément #dl dans une variable
        dl = document.getElementById("dl");
      }
     
      // vide l’élément #dl
      dl.textContent = "";
     
      if (0 === time) {
        dl.insertAdjacentHTML("beforeend", `
          <p>
            Veuillez cliquer ci-dessous pour télécharger <b>preisle2.zip</b>
          </p>
     
          <form method="post" action="http://............">
            <input type="submit" value="Téléchargez votre fichier" />
          </form>
     
          <button>Enregistrer sur Dropbox</button>
        `);
     
        // remplace l’attribut onclick
        dl.querySelector("button").addEventListener("click", function () {
          dropboxSave("http://..............", "preisle2.zip");
        });
      }
      else if (time > 0) {
        dl.insertAdjacentHTML("beforeend", `
          <p>
            Lisez le message de notre sponsor ci-dessous en attendant que votre
            lien de téléchargement apparaisse dans ${time} secondes
          </p>
        `);
     
      }
     
      time--;
    }
     
    function dropboxSave(url, filename) {
      Dropbox.save(url, filename);
    }
     
    download();
     
    </script>
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

  10. #10
    Membre très actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 371
    Par défaut
    Puis-je avoir le script.sh ?

  11. #11
    Expert confirmé
    Avatar de Watilin
    Homme Profil pro
    En recherche d'emploi
    Inscrit en
    Juin 2010
    Messages
    3 094
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Par défaut
    Ça c’est à toi de le faire, je ne peux pas savoir à ta place ce que tu veux faire avec le contenu du zip.
    Ça commencera probablement par un appel à unzip ou équivalent, et il faudra peut-être aussi utiliser la CLI Dropbox.
    La FAQ JavaScript – Les cours JavaScript
    Touche F12 = la console → l’outil indispensable pour développer en JavaScript !

Discussions similaires

  1. Comment exécuter une ligne de commande ?
    Par tarekos dans le forum C#
    Réponses: 26
    Dernier message: 27/06/2008, 15h44
  2. Exécuter des lignes de commandes
    Par Neji44 dans le forum Windows Forms
    Réponses: 10
    Dernier message: 09/05/2008, 16h15
  3. [C#] Exécution de ligne de commande
    Par jeromechezgdf dans le forum C#
    Réponses: 1
    Dernier message: 01/08/2007, 17h27
  4. [Système] Exécuter une ligne de commande
    Par fordprobe dans le forum Langage
    Réponses: 2
    Dernier message: 09/07/2007, 14h46
  5. Exécuter une ligne de commande dos
    Par koKoTis dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 20/08/2006, 07h03

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