如何在html页面上动态添加到脚本src的路由?

时间:2016-04-25 21:01:37

标签: javascript html angularjs webpage

我有一个HTML页面,它引用了一些脚本,如:

<script charset="utf-8" src="Content/Styles/ThemeForest/assets/js/vendors.js"></script>
<script charset="utf-8" src="Content/Styles/ThemeForest/assets/js/app.js"></script>

问题是,当我将我的网站上传到服务器时,它已不再有效。 我想如果我改为添加Web应用程序名称,它将再次起作用。像这样:

<script charset="utf-8" src="MySite/Content/Styles/ThemeForest/assets/js/vendors.js"></script>
<script charset="utf-8" src="MySite/CContent/Styles/ThemeForest/assets/js/app.js"></script>

现在,问题是,我可能不知道Web应用程序名称一旦上传到服务器后会是什么样的......所以,我想动态地将应用程序名称添加到src。

我注意到有一个名为window.location.pathname的JavaScript函数,它可以为我带来Web应用程序名称(如果有的话)。我可以将其连接到路线的其余部分,它应该可以工作。

现在,问题是,这都是在常规HTML页面上。 有没有办法可以使用基本的JavaScript函数设置自定义路径到这些脚本标签?还是其他任何想法?

2 个答案:

答案 0 :(得分:0)

您可以使用$script之类的内容,只需在app.run或任何其他位置添加这些代码行,然后使用要加载的js文件路径数组来调用它。您说您可以获取Web应用程序名称,因此只需传递与脚本路径连接的应用程序名称:

var dependenciesLoadingFactory = function(deps) {
    return ['$q', '$rootScope', function($q, $rootScope) {
        var deferred = $q.defer();
        $script(deps, function() {
            $rootScope.$apply(function() { deferred.resolve(); });
        });
        return deferred.promise;
    }];
};

答案 1 :(得分:-1)

如果您链接到以目录或文件名本身开头的源文档(就像您在问题中所做的那样),查找将从当前文件所在的文件夹开始查找它(这将是html文件,保存你的脚本标签)。 您还可以链接到父目录中相对于当前位置的文件,如下所示:

../file.js

您也可以链接到以斜杠开头的路径:

/dir/to/your/file.js

这将开始查看您网页的根目录,即您的域或子域指向的目录。您无法成功链接到根目录之上的文件。

最后,如果您的文件位于其他服务器上,请确保包含完整路径,包括http:// snippet:

http://example.website.com/dir/file.js

在正常情况下,真的没有理由偏离这些方法,但如果你必须动态设置目录,我建议你使用php,因为它是服务器端,因此对用户来说更快,如果他们禁用了javascript(如果你以这种方式链接到其他文件,例如样式表,这很重要):

<?php $directory = '/dir/'; ?>
<script src="<?php print $directory; ?>file.js"></script>

当然,为了实现这一点,您的服务器必须运行php。