如何获取当前正在执行的javascript代码的文件路径

新手上路,请多包涵

我正在尝试做一些类似 C #include "filename.c" 或 PHP include(dirname(__FILE__)."filename.php") 的事情,但在 javascript 中。我知道如果我可以获得加载 js 文件的 URL(例如,标签的 src 属性中给出的 URL),我就可以做到这一点。 javascript有什么办法知道吗?

或者,有没有什么好方法可以从同一个域动态加载 javascript(不知道具体的域)?例如,假设我们有两个相同的服务器(QA 和生产),但它们显然具有不同的 URL 域。有没有办法做类似 include("myLib.js"); myLib.js 将从加载文件的域加载的地方?

对不起,如果这句话有点令人困惑。

原文由 B T 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 887
2 个回答

在脚本中:

 var scripts = document.getElementsByTagName("script"),
    src = scripts[scripts.length-1].src;

这是可行的,因为浏览器按顺序加载和执行脚本,因此当您的脚本正在执行时,包含它的文档肯定会将您的脚本元素作为页面上的最后一个元素。这段代码当然必须是脚本的“全局”代码,因此请将 src 保存在以后可以使用的地方。通过将其包装在以下内容中来避免泄漏全局变量:

 (function() { ... })();

原文由 InfinitiesLoop 发布,翻译遵循 CC BY-SA 4.0 许可协议

除了 Internet Explorer(任何版本)之外的所有浏览器都有 document.currentScript ,它始终有效(无论文件是如何包含的(异步,小书签等))。

如果你想知道你现在所在的 JS 文件的完整 URL:

 var script = document.currentScript;
var fullUrl = script.src;

Tadaa。

原文由 Rudie 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题