这听起来像是一个琐碎的问题,但我真的需要知道。
如果您将HTML文件的URL放在浏览器的地址栏中,它将呈现该HTML。这就是浏览器的全部用途。
如果你给它一个JPG,或者一个SWF,甚至PDF,它会为这些数据类型做正确的事情。
但是,如果您给它一个JavaScript文件的URL,它将显示该文件的文本。我想要的是直接执行该文件。
现在,我知道如果您使用javascript:
协议,它将执行URL的文本,但这不是我需要的。
我可以让URL指向一个包含单个<script>
标记的HTML文件,而这个标记又指向JavaScript文件,但是由于我自己的隐秘原因,我不能这样做。
如果http://example.com/file.js
上的文件完全由
alert("it ran");
我把这个URL放在地址栏里,我想让"it ran“作为一个提示弹出来。
我怀疑这是否可能,但我希望有一个头或MIME类型或类似的东西,我可以设置并奇迹般地实现这一点。
发布于 2011-10-11 03:19:07
这是不可能的。浏览器不知道JavaScript应该在什么上下文中运行;例如,window
的属性是什么?如果你假设它可以提供一些随机的默认值,那么document
的行为会怎样呢?如果有人执行document.body.innerHTML = "foo"
,会发生什么?
与图像或超文本标记语言页面不同,JavaScript依赖于它运行的上下文。该上下文可以是HTML页面,也可以是Node服务器环境,甚至可以是Windows脚本主机。但是,如果您只是导航到一个URL,浏览器不知道它应该在什么上下文中运行脚本。
作为一种解决办法,也许可以使用about:blank
作为主页。然后,您可以通过在URL栏中粘贴以下内容,将脚本插入到文档中,并为其提供适当的执行上下文:
javascript:(function () { var el = document.createElement("script"); el.src = "PUT_URL_HERE"; document.body.appendChild(el); })();
发布于 2014-12-14 04:06:47
或者您可以使用RunJS:https://github.com/Dharmoslap/RunJS
然后你就可以通过拖放来运行.js文件了。
发布于 2011-10-11 03:15:32
不是直接的,但是你可以做一个简单的服务器端脚本,例如用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>
https://stackoverflow.com/questions/7717382
复制相似问题