首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >直接从浏览器执行JavaScript文件

直接从浏览器执行JavaScript文件
EN

Stack Overflow用户
提问于 2011-10-11 03:03:40
回答 6查看 62.4K关注 0票数 22

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

如果您将HTML文件的URL放在浏览器的地址栏中,它将呈现该HTML。这就是浏览器的全部用途。

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

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

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

我可以让URL指向一个包含单个<script>标记的HTML文件,而这个标记又指向JavaScript文件,但是由于我自己的隐秘原因,我不能这样做。

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

代码语言:javascript
复制
 alert("it ran");

我把这个URL放在地址栏里,我想让"it ran“作为一个提示弹出来。

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

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-10-11 03:19:07

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

与图像或超文本标记语言页面不同,JavaScript依赖于它运行的上下文。该上下文可以是HTML页面,也可以是Node服务器环境,甚至可以是Windows脚本主机。但是,如果您只是导航到一个URL,浏览器不知道它应该在什么上下文中运行脚本。

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

代码语言:javascript
复制
javascript:(function () { var el = document.createElement("script"); el.src = "PUT_URL_HERE"; document.body.appendChild(el); })();
票数 14
EN

Stack Overflow用户

发布于 2014-12-14 04:06:47

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

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

票数 3
EN

Stack Overflow用户

发布于 2011-10-11 03:15:32

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

代码语言:javascript
复制
http://example.com/file.js

,导航到:

代码语言:javascript
复制
http://localhost/execute_script.php?url=http://example.com/file.js

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

请注意,这在安全性方面不是很好,但如果您自己使用它,并且知道您正在下载的是什么,那么您应该会很好。

代码语言:javascript
复制
<html>
 <head>

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

 </head>

 <body>

 </body>
</html>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7717382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档