Подтвердить что ты не робот

Выполнение файла JavaScript непосредственно из браузера

Это звучит как мелочи, но мне действительно нужно знать.

Если вы поместите URL-адрес HTML файла в панель "Местоположение" вашего браузера, он отобразит этот HTML-код. Что вся цель браузера.

Если вы дадите ему JPG, SWF или даже PDF, он сделает правильные вещи для этих типов данных.

Но если вы укажете URL-адрес файла JavaScript, он отобразит текст этого файла. Я хочу, чтобы этот файл выполнялся напрямую.

Теперь я знаю, что если вы используете протокол javascript:, он выполнит текст URL-адреса, но это не то, что мне нужно.

Я мог бы указать URL-адрес HTML файла, состоящего из одного тега <script>, который, в свою очередь, указывает на файл JavaScript, но по незавидным причинам я не могу этого сделать.

Если файл в http://example.com/file.js состоит целиком из

 alert("it ran");

И я разместил этот URL-адрес на панели "Расположение", я хочу, чтобы "он запускался", чтобы отображаться как предупреждение.

Я скептически отношусь к тому, что это возможно, но я надеюсь, что есть заголовок или MIME-тип или что-то подобное, что я могу установить и чудесным образом сделать это.

4b9b3361

Ответ 1

Это невозможно. Браузер не знает, в каком контексте должен работать JavaScript; например, каковы свойства window? Если вы предполагаете, что это может привести к некоторым случайным значениям по умолчанию, как насчет поведения document? Если кто-то делает document.body.innerHTML = "foo", что должно произойти?

JavaScript, в отличие от изображений или HTML-страниц, зависит от контекста, в котором он выполняется. Этот контекст может быть HTML-страницей, или это может быть серверная среда Node, или это может быть даже Windows Scripting Host. Но если вы просто перейдете к URL-адресу, браузер не знает, в каком контексте он должен работать script in.


В качестве обходного пути, возможно, используйте about:blank в качестве главной страницы. Затем вы можете вставить script в документ, предоставив ему соответствующий контекст выполнения, вставив в свою строку URL следующие строки:

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

Ответ 2

Не напрямую, но вы можете сделать простой серверный script, например. в PHP. Вместо

http://example.com/file.js

перейдите к:

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

Конечно, вы можете уменьшить это, используя RewriteRule в Apache и/или добавив еще одну запись в ваш файл hosts, которая перенаправляется на 127.0.0.1.

Обратите внимание, что это не очень удобно с точки зрения безопасности, но если вы используете его самостоятельно и знаете, что вы загружаете, вы должны быть в порядке.

<html>
 <head>

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

 </head>

 <body>

 </body>
</html>

Ответ 3

Или вы можете использовать RunJS: https://github.com/Dharmoslap/RunJS

Затем вы сможете запускать .js файлы только с помощью drag & drop.

Ответ 5

вы можете написать свой собственный браузер с помощью qt/webkit и сделать это. когда пользователь вводит js файл в адрес url, вы можете прочитать этот файл и выполнить javascript.

http://code.google.com/apis/v8/get_started.html - еще один канал. не уверен, что он соответствует потребностям ур.

Ответ 6

Используйте Node.js. Загрузите и установите Node.js и создайте сервер http/s и запишите, что вы хотите отобразить в браузере. используйте localhost:: portNumber на сервере как url ​​для запуска вашего файла. обратитесь к node js doc - https://nodejs.org/dist/latest-v7.x/docs/api/http.html

Выполнить - http://localhost:3000

пример кода ниже:

  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);`