web-dev-qa-db-fra.com

Exécuter un fichier JavaScript directement depuis le navigateur

Cela ressemble à une question triviale mais j'ai vraiment besoin de savoir.

Si vous placez l'URL d'un fichier HTML dans la barre d'adresse de votre navigateur, le rendu sera rendu au format HTML. C'est tout le but d'un navigateur.

Si vous lui donnez un fichier JPG, un fichier SWF ou même un fichier PDF, il fera le nécessaire pour ces types de données.

Mais, si vous lui donnez l'URL d'un fichier JavaScript, il sera afficher le texte de ce fichier. Ce que je veux, c'est que ce fichier soit exécuté directement.

Maintenant, je sais que si vous utilisez le protocole javascript:, il exécutera le texte de l'URL, mais ce n'est pas ce dont j'ai besoin.

L'URL pourrait pointer vers un fichier HTML constitué d'une seule balise <script> qui à son tour pointe vers le fichier JavaScript, mais pour des raisons occultes, je ne peux pas le faire.

Si le fichier en http://example.com/file.js est entièrement constitué de

 alert("it ran");

Et je mets cette URL dans la barre d’emplacement, je veux que "il a fonctionné" apparaisse comme une alerte.

Je suis sceptique sur le fait que cela soit possible, mais j'espère contre-espoir qu'il existe un en-tête ou un type MIME ou quelque chose du genre que je puisse définir et réaliser miraculeusement.

20
Malvolio

Ce n'est pas possible. Le navigateur n'a aucune idée du contexte dans lequel JavaScript doit s'exécuter. Par exemple, quelles sont les propriétés de window? Si vous supposez que cela peut donner des valeurs par défaut aléatoires, qu'en est-il du comportement de document? Si quelqu'un document.body.innerHTML = "foo" que devrait-il se passer?

Contrairement aux images ou aux pages HTML, JavaScript dépend du contexte dans lequel il s'exécute. Ce contexte peut être une page HTML, un environnement de serveur de noeud ou même un hôte de script Windows. Mais si vous accédez simplement à une URL, le navigateur n'a aucune idée du contexte dans lequel il doit exécuter le script.


En guise de solution de contournement, utilisez peut-être about:blank en tant que page hôte. Ensuite, vous pouvez insérer le script dans le document, en lui donnant le contexte d'exécution approprié, en collant ce qui suit dans votre barre d'adresse

javascript:(function () { var el = document.createElement("script"); el.src = "PUT_URL_HERE"; document.body.appendChild(el); })();
13
Domenic

Ou vous pouvez utiliser RunJS: https://github.com/Dharmoslap/RunJS

Ensuite, vous pourrez exécuter des fichiers .js simplement par glisser-déposer.

3
Ladislav M

Pas directement, mais vous pouvez créer un script simple côté serveur, par exemple. en PHP. Au lieu de

http://example.com/file.js

, aller vers:

http://localhost/execute_script.php?url=http://example.com/file.js

Bien sûr, vous pouvez réduire ce nombre en utilisant RewriteRule dans Apache et/ou en ajoutant une autre entrée dans votre fichier hosts qui redirige vers 127.0.0.1.

Notez que ce n’est pas formidable en termes de sécurité, mais si vous l’utilisez vous-même et savez ce que vous téléchargez, tout devrait bien se passer.

<html>
 <head>

  <script>
   <? echo file_get_contents($_GET['url']); ?>
  </script>

 </head>

 <body>

 </body>
</html>
2
pimvdb

Dans la barre d'adresse, vous écrivez simplement

javascript:/du code javascript ici /; void (0);

http://www.javascriptkata.com/2007/05/01/execute-javascript-code-directly-in-your-browser/

1
PhilippeThomas

Utilisez Node.js. Téléchargez et installez node.js, créez un serveur http/s et notez ce que vous voulez afficher dans le navigateur. utilisez localhost :: portNumber sur le serveur comme URL pour exécuter votre fichier. voir nœud js doc - https://nodejs.org/dist/latest-v7.x/docs/api/http.html

Exécuter - http: // localhost: 3000

exemple de code ci-dessous: 

  var http = require("http");
  var server = http.createServer(function(req,res){
  res.writeHead(200,{'Content-Type':'text/html'});
       res.end("hello user");
  }); server.listen(3000);`
0
Sowmya M