而不是:
<script src="/scripts/myJsFile.v1.js" type="text/javascript></script>
有像
这样的东西<script src="/scripts/myJsFile." + versionVar + ".js" type="text/javascript></script>
这样,当我们更新js版本文件时,用户不必清除缓存。
答案 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文件中执行此操作。但如果versopnVar
是window
上下文中的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文件。