这听起来像是一个琐事问题,但我真的需要知道。
如果您将HTML文件的URL放在浏览器的位置栏中,它将呈现该HTML。这就是浏览器的全部目的。
如果你给它一个JPG,或一个SWF,甚至PDF,它将为这些数据类型做正确的事情。
但是,如果你给它一个JavaScript文件的URL,它将显示该文件的文本。我想要的是直接执行该文件。
现在,我知道如果您使用javascript:
协议,它将执行URL的文本,但这不是我需要的。
我可以将URL指向由单个<script>
标记组成的HTML文件,该标记又指向JavaScript文件,但出于我自己的隐藏原因,我不能这样做。
如果http://example.com/file.js
的文件完全由
alert("it ran");
我把这个网址放在了位置栏中,我希望“运行”以弹出警报。
我怀疑这是可能的,但我希望 - 反对 - 希望有一个标题或MIME类型或类似的东西我可以设置并奇迹般地实现这一点。
答案 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
以下示例代码:
**
答案 5 :(得分:-1)
您可以使用qt / webkit编写自己的浏览器并执行此操作。 当用户在url位置输入js文件时,您可以读取该文件并执行javascript。
http://code.google.com/apis/v8/get_started.html是另一个渠道。 不确定它是否符合你的需要。