是否可以将变量用于javascript引用

时间:2011-09-21 17:36:17

标签: javascript html

而不是:

<script src="/scripts/myJsFile.v1.js" type="text/javascript></script>

有像

这样的东西
<script src="/scripts/myJsFile." + versionVar + ".js" type="text/javascript></script>

这样,当我们更新js版本文件时,用户不必清除缓存。

7 个答案:

答案 0 :(得分:5)

不是这样,因为你将HTML和JavaScript混合在一起。 HTML没有可用的JavaScript变量。

然而,您可以做的是动态添加<script>标记,即通过JavaScript添加。这样,你显然 能够使用变量:

<script>
var versionVar = "1.0";

window.addEventListener('load', function() { // on load

    var scriptTag = document.createElement('script'); // create tag
    scriptTag.src = "/scripts/myJsFile." + versionVar + ".js" // set src attribute
    scriptTag.type = "text/javascript"; //set type attribute
    document.getElementsByTagName('head')[0].appendChild(scriptTag); // append to <head>

}, false);
</script>

答案 1 :(得分:2)

您无法直接在HTML文件中执行此操作。但如果versopnVarwindow上下文中的JavaScript变量,您仍然可以在脚本代码中执行此操作:

<script type="text/javascript">
var script = document.createElement('script');
script.setAttribute('src', '/scripts/myJsFile.' + versionVar + '.js');
script.setAttribute('type', 'text/javascript');
document.body.appendChild(script);
</script>

最后,这不是一个好的方法。请在列表中阅读本文以获取信息。

<强> Alternative Style: Working With Alternate Style Sheets

答案 2 :(得分:2)

了解Google如何加载Google Analytics。然后尝试类似的东西:

(function() {
    var versionVar = 9;

    var ga = document.createElement('script'); 
ga.type = 'text/javascript';
ga.src =  'http://www' + '.google-analytics.com/ga' + versionVar + '.js';

    var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();

答案 3 :(得分:1)

做一些像

这样的事情可能会更好
<script src="/scripts/myJsFile.js?v1" type="text/javascript></script>

然后,当你制作并更新时:

<script src="/scripts/myJsFile.js?v2" type="text/javascript></script>

这将导致大多数浏览器提取文件而不是从缓存中提取。这意味着您将没有单独的JS文件。但是只会强迫用户拉最新的。

此外,如果您希望它始终拉动文件,您可以以类似的方式附加一个随机的int。

答案 4 :(得分:1)

你不能直接这样做。

一种方法是使用一些服务器端代码 例如在php:

<?php $version = "1.0"; ?>

<script src="/scripts/myJsFile.<?php echo $version ?>.js" type="text/javascript></script>

答案 5 :(得分:1)

不完全是这样,但您可以创建一个新的脚本节点,例如document.createElement并将其添加到页面中。

var s = document.createElement("script");
s.src = ...
document.body.appendChild(s);

您也可以使用document.write来执行相同操作...

答案 6 :(得分:0)

您必须更新页面才能更新变量。此外,每次更改时都必须更新javascript文件名。

您可以使用查询字符串使您的JS独一无二。

<script src="/scripts/myJsFile.js?version=2" type="text/javascript></script>
马歇尔&amp;我有同样的想法。

此外,每次更新Javascript文件时都必须更新HTML文件。