如何在script的src中加Math.random()?

<link rel="stylesheet" type="text/css" href="css/ratchet.css?">
<link href="css/app.css?" rel="stylesheet">
<script src="js/modal.js?"></script>
我希望在“?”后面加Math.random(),但貌似不行。

阅读 10.8k
2 个回答
new loadSource("js/modal.js");
new loadSource("css/app.css");
function loadSource(src){
    this.src = src;
    var type = src.split(".").pop();
    loadSource.prototype.loadJS = loadSource.prototype.loadjs = function() {
        var s = document.createElement('script');
        s.src = this.src+"?"+Math.random();
        s.async = true;
        document.head.appendChild(s);
    }
    loadSource.prototype.loadCSS = loadSource.prototype.loadcss = function() {
        var c = document.createElement('link');
        c.rel = 'stylesheet';
        c.href = src+"?"+Math.random();
        document.head.appendChild(c);
    }
    if(this["load"+type]) this["load"+type]();
}

大概的代码就是这样,手打的可能有些错误,不过比起Math.random()还是推荐你直接用时间戳比较好。

要么用工具干这件事,比如 grunt-timestamp, grunt-replace 之类的插件打时间戳。实际上扫一眼这些插件,把时间戳结果换成 Math.random() 即可。

要么这么干:

// 伪代码
var url = 'js/modal.js?' + Math.random();
var script = document.getElementsByTagName('script')[0];
script.src = url;

第二个办法真的实践起来本身就有很多问题,更别谈维护问题了。

以上是思路。。。最终结果是改静态资源文件路径,想办法搞定这件事就行了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题