搜索

首页  >  问答  >  正文

javascript - 如何在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(),但貌似不行。

黄舟黄舟2775 天前1016

全部回复(2)我来回复

  • PHP中文网

    PHP中文网2017-04-10 14:47:18

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

    要么这么干:

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

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

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

    回复
    0
  • 大家讲道理

    大家讲道理2017-04-10 14:47:18

    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()还是推荐你直接用时间戳比较好。

    回复
    0
  • 取消回复