• 利用本地存储,保存js文件


    var ScriptStorage = function (url) {
        this.url = url;
        this.storageName = 'script-' + url.split('?')[0];
        this.init();
    }
    
    ScriptStorage.prototype = {
        init: function () {
            if(this.hasStorage){
                var storage = this.storage.get(this.storageName);
                if(storage && storage.url === this.url){
                    this.scriptHandle(storage.script, 0);
                }else{
                    this.xhr(this.url, this.scriptHandle.bind(this));
                }
            }else{
                var script = this.createElement('script',{"src": this.url});
                document.body.appendChild(script);
            }
        },
        hasStorage: (function(){
            var test = 'test';
            try {
                localStorage.setItem(test, test);
                localStorage.removeItem(test);
                return true;
            } catch(e) {
                return false;
            }
        }()),
        scriptHandle: function (data, restorage) {
            if(data){
                var script = this.createElement('script');
                script.innerHTML = data;
                document.body.appendChild(script);
                var storageData = {
                    url: this.url,
                    script: data
                }
                if(restorage){
                    this.storage.set(this.storageName, storageData);
                }
            }
        },
        createElement: function (tag, option) {
            var el = document.createElement(tag);
            for (var i in option) {
                if(option.hasOwnProperty(i)){
                    el.setAttribute(i, option[i]);
                }
            }
            return el;
        },
        storage: {
            get: function (key) {
                return JSON.parse(window.localStorage.getItem(key));
            },
            set: function (key, value) {
                return window.localStorage.setItem(key, JSON.stringify(value));
            }
        },
        xhr: function (url, callback) {
            var xhr = new XMLHttpRequest();
            xhr.onreadystatechange = function() {
                if (xhr.readyState == 4 && xhr.status ==200) {
                    callback(xhr.responseText, !0);
                }
            }
            xhr.open('GET', url, true);
            xhr.send(null);
        }
    }
    
    var scriptUrl = 'test.js?version=1.0.0';
    var storageScript = new ScriptStorage(scriptUrl);
  • 相关阅读:
    几款网络测试工具总结
    Linux安装telnet
    Linux下iptables 禁止端口和开放端口
    mysql创建某个数据库中的某张表 只读用户
    查看nginx版本号的几种方法
    Ngxtop-Nginx日志实时分析利器
    Nginx监控运维
    oracle经典书籍推荐
    华为典型局域网组网案例介绍(1)
    技术说明 路由器是如何工作的呢? 一个简单的解释
  • 原文地址:https://www.cnblogs.com/childsplay/p/5028502.html
Copyright © 2020-2023  润新知