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
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 358
    Points : 0
    Points
    0
    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
    Points : 2 009
    Points
    2 009
    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 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    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 640
    Points : 66 669
    Points
    66 669
    Billets dans le blog
    1
    Par défaut
    Très constructif ...

    il existe une API dropbox pour sauvegarder ...

    https://www.dropbox.com/developers/saver

  4. #4
    Membre expérimenté

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

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

    Informations forums :
    Inscription : Mars 2002
    Messages : 649
    Points : 1 493
    Points
    1 493
    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
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 358
    Points : 0
    Points
    0
    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 éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    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
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

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

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    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 éminent
    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 : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    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>

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    358
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

  11. #11
    Expert éminent
    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 : 35
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : En recherche d'emploi

    Informations forums :
    Inscription : Juin 2010
    Messages : 3 094
    Points : 6 755
    Points
    6 755
    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.

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