Выполнение файла 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-тип или что-то подобное, что я могу установить и чудесным образом сделать это.
Ответы
Ответ 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.
Ответ 4
В адресной строке вы просто пишете
javascript:/некоторый код javascript здесь /; void (0);
http://www.javascriptkata.com/2007/05/01/execute-javascript-code-directly-in-your-browser/
Ответ 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);`