4

当简单地加载带有<script />标签的脚本时,您可以像这样检索脚本 URL:

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?

4

2 回答 2

9

您可以 requiremodule模块,该模块通常用于传递特殊config设置:

define(['module'], function (module) {
  console.log(module)
}

这将为您提供一个对象,该对象包含模块的 id 和 uri

于 2013-08-19T12:27:28.447 回答
1

要获取当前模块的 URL,您可以在 requirejs 中使用以下脚本。

define([module/hello], function (hello) {
    var currentUrl = location.href;
    var moduleUrl = url+require.toUrl("module/hello.js");
    alert(moduleUrl);
});
于 2013-08-19T12:55:29.840 回答