直接从浏览器执行JavaScript文件

时间:2011-10-10 19:03:40

标签: javascript browser

这听起来像是一个琐事问题,但我真的需要知道。

如果您将HTML文件的URL放在浏览器的位置栏中,它将呈现该HTML。这就是浏览器的全部目的。

如果你给它一个JPG,或一个SWF,甚至PDF,它将为这些数据类型做正确的事情。

但是,如果你给它一个JavaScript文件的URL,它将显示该文件的文本。我想要的是直接执行该文件。

现在,我知道如果您使用javascript:协议,它将执行URL的文本,但这不是我需要的。

我可以将URL指向由单个<script>标记组成的HTML文件,该标记又指向JavaScript文件,但出于我自己的隐藏原因,我不能这样做。

如果http://example.com/file.js的文件完全由

组成
 alert("it ran");

我把这个网址放在了位置栏中,我希望“运行”以弹出警报。

我怀疑这是可能的,但我希望 - 反对 - 希望有一个标题或MIME类型或类似的东西我可以设置并奇迹般地实现这一点。

6 个答案:

答案 0 :(得分:13)

这是不可能的。浏览器不知道JavaScript应该运行的上下文;例如,window的属性是什么?如果你认为它可以提出一些随机默认值,那么document的行为呢?如果有人document.body.innerHTML = "foo"会发生什么?

JavaScript与图像或HTML页面不同,它依赖于运行它的上下文。该上下文可以是HTML页面,也可以是Node服务器环境,也可以是Windows Scripting Host。但是如果你只是导航到一个URL,浏览器就不知道应该在哪个上下文中运行脚本。


作为一种解决方法,也许使用about:blank作为主页。然后,您可以通过在URL栏中粘贴以下内容将脚本插入到文档中,为其提供适当的执行上下文:

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

答案 1 :(得分:3)

或者您可以使用RunJS:https://github.com/Dharmoslap/RunJS

然后你就可以通过拖放操作来运行.js文件。

答案 2 :(得分:2)

不是直接的,但你可以制作一个简单的服务器端脚本,例如:用PHP。而不是

http://example.com/file.js

,导航至:

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

当然,你可以通过在Apache中使用RewriteRule和/或在主机文件中添加另一个重定向到127.0.0.1的条目来解决这个问题。

请注意,这在安全性方面并不是很好,但如果您自己使用它并知道您要下载的内容,那么您应该没问题。

<html>
 <head>

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

 </head>

 <body>

 </body>
</html>

答案 3 :(得分:1)

在地址栏中,您只需编写

即可

javascript:/ 这里有一些javascript代码 /; void(0);

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

答案 4 :(得分:0)

使用Node.js. 下载并安装node.js并创建一个http / s服务器并记下要在浏览器中显示的内容。 在服务器上使用localhost :: portNumber作为url来运行您的文件。 请参阅节点js doc - https://nodejs.org/dist/latest-v7.x/docs/api/http.html

运行 - http://localhost:3000

以下示例代码:

**

答案 5 :(得分:-1)

您可以使用qt / webkit编写自己的浏览器并执行此操作。 当用户在url位置输入js文件时,您可以读取该文件并执行javascript。

http://code.google.com/apis/v8/get_started.html是另一个渠道。 不确定它是否符合你的需要。