只需使用<script />
标记加载脚本时,就可以像这样检索脚本网址:
var scriptURL = Array.prototype.pop.call ( // get the last...
document.getElementsByTagName ('script') // ...script tag on the page...
).src.split ('?') [0]; // ...take 'src' attribute...
// ...and strip the query string
这有点像黑客攻击,但有时可能非常有用,原因有很多(例如,当有其他资源文件依赖于脚本并且您不想对路径进行硬编码时)。它的工作原理是因为在执行时,页面上存在的最后一个<script />
标记就是您的脚本。
使用 RequireJS 加载脚本时,我不确定是不是这样。在 RequireJS 中是否有类似的方法从模块定义中检索脚本URL?
答案 0 :(得分:9)
您可以要求module
模块,该模块通常用于传递特殊的config
设置:
define(['module'], function (module) {
console.log(module)
}
这将为您提供一个对象,其中包含id和uri到模块
答案 1 :(得分:1)
要获取当前模块的URL,您可以在requirejs中使用以下脚本。
define([module/hello], function (hello) {
var currentUrl = location.href;
var moduleUrl = url+require.toUrl("module/hello.js");
alert(moduleUrl);
});