直接从浏览器执行JavaScript文件

Mal*_*lio 21 javascript browser

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

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

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

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

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

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

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

 alert("it ran");
Run Code Online (Sandbox Code Playgroud)

我把那个URL放在位置栏中,我希望"它跑"以弹出警报.

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

Dom*_*nic 14

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

与图像或HTML页面不同,JavaScript依赖于它运行的上下文.该上下文可以是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); })();
Run Code Online (Sandbox Code Playgroud)

  • 编码让你谦虚@Malvolio :) (2认同)