## ;(function (global) { 'use strict'; //检查文件类型 var TYPE_RE = /\.(js|css)(?=[?&,]|$)/i; function fileType(str) { var ext = 'js'; str.replace(TYPE_RE, function (m, $1) { ext = $1; }); if (ext !== 'js' && ext !== 'css') ext = 'unknown'; return ext; } //将js片段插入dom结构 function evalGlobal(strScript){ var scriptEl = document.createElement ("script"); scriptEl.type= "text/javascript"; scriptEl.text= strScript; document.getElementsByTagName("head")[0].appendChild(scriptEl) ; } //将css片段插入dom结构 function createCss(strCss) { var styleEl = document.createElement('style'); document.head.appendChild(styleEl); styleEl.appendChild(document.createTextNode(strCss)); } // 在全局作用域执行js或插入style node function defineCode(url, str) { var type = fileType(url); if (type === "js"){ //with(window)eval(str); evalGlobal(str); }else if(type === "css"){ createCss(str); } } // 将数据写入localstorage var setLocalStorage = function(key, item){ window.localStorage && window.localStorage.setItem(key, item); } // 从localstorage中读取数据 var getLocalStorage = function(key){ return window.localStorage && window.localStorage.getItem(key); } // 通过AJAX请求读取js和css文件内容,使用队列控制js的执行顺序 var rawQ = []; var monkeyLoader = { loadInjection: function(url,onload,bOrder){ var iQ = rawQ.length; if(bOrder){ var qScript = {key: null, response: null, onload: onload, done: false}; rawQ[iQ] = qScript; } //有localstorage 缓存 var ls = getLocalStorage(url); if(ls !== null){ if(bOrder){ rawQ[iQ].response = ls; rawQ[iQ].key = url; monkeyLoader.injectScripts(); }else{ defineCode(url, ls) if(onload){ onload(); } } } else { var xhrObj = monkeyLoader.getXHROject(); xhrObj.open('GET', url, true); xhrObj.send(null); xhrObj.onreadystatechange = function(){ if(xhrObj.readyState == 4){ if(xhrObj.status == 200){ setLocalStorage(url, xhrObj.responseText); if(bOrder){ rawQ[iQ].response = xhrObj.responseText; rawQ[iQ].key = url; monkeyLoader.injectScripts(); }else{ defineCode(url, xhrObj.responseText) if(onload){ onload(); } } } } } } }, injectScripts: function(){ var len = rawQ.length; //按顺序执行队列中的脚本 for (var i = 0; i < len; i++) { var qScript = rawQ[i]; //没有执行 if(!qScript.done){ //没有加载完成 if(!qScript.response){ console.error("raw code lost or not load!"); //停止,等待加载完成, 由于脚本是按顺序添加到队列的,因此这里保证了脚本的执行顺序 break; }else{//已经加载完成了 defineCode(qScript.key, qScript.response) if(qScript.onload){ qScript.onload(); } delete qScript.response; qScript.done = true; } } } }, getXHROject: function(){ //创建XMLHttpRequest对象 var xmlhttp; if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else { // code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } return xmlhttp; } }; global.monkeyLoader = monkeyLoader.loadInjection; })(this);
相关推荐
seed项目我正在使用引导程序样式我使用 localStorage 角度服务来保存选定的图像其他注意事项资产没有串联和缩小由于angular ng-attributes而无法验证我将 Flickr API 调用移到了 angular 服务中可以通过使用预加载器...
然后,我们使用ajax GET将用户GitHub通知(标题和ID)预加载到localStorage中。 下一步使用ajax POST将更新发送到GitHub,源将其保存到localStorage。作者布莱恩·雷(Brian Ray)( ) 罗纳德·金奇(Ronald Kinch...
一个基于vue2.0开发的小说网站 1.0版本技术栈采用... store使用localStorage本地存储,dns预解析,vue-router路由组件的懒加载,部署后使用nginx缓存开启gzip压缩。 cd novel-vue yarn yarn serve 打包 yarn build
新功能:• 修复图片长时间加载的bug• 修复磨砂滤镜下的黑边bug• 增加localStorage的安全封装v1.6.1:• 可直接在新标签页面修改motto/todo• 使用颜色预加载模式• 优化设置页面动画,版式• 新增fliker图源• ...
一个基于vue2.0开发的小说网站 1.0版本技术栈采用yarn、vue-cli3.0、axios、vue-router、vue-touch、... store使用localStorage本地存储,dns预解析,vue-router路由组件的懒加载,部署后使用nginx缓存开启gzip压缩。
一个渐进式Web应用程序,可将注释存储在localStorage中 笔记 在发布任何预发行版之前,我的提交将不那么专业 主要提交内容将有完整的说明 其他提交(例如更改README.md或TODO)将具有基本说明(例如,“ Edited ...
这是通过使用localStorage变量以及setItem和getItem方法来实现的。 实际的保存按钮是在引导程序,超棒的字体和预构建的style.css文件的帮助下创建的。 通过使用moment.js,该网站可以显示当前日期,同时还可以根据...
Monitaure是一项在线服务,旨在为SysAdmins提供一个干净,轻巧和快速配置的监控仪表板。 该应用程序不需要任何客户端安装或... 安全: 通过HTTPS服务, (TLS 1.2,OCSP装订,HSTS,HSTS预加载,转发保密等); CSRF代
记录保存和加载(基于localStorage实现) 记录分享 界面优化: 移动端适配 航母装备选择辅助工具 基本功能 舰载机筛选: 支持对各位置的舰载机进行进一步的筛选 排序方式优化: 支持按Buff覆盖率排序 界面优化: ...
使用VueRouter / Vue Meta,预渲染/ serer渲染(SSR), C。 SEO友好网址d。 延迟加载而不是整个页面呈现e。 移动友好。 异步:异步函数是通过事件循环异步操作的函数,使用隐式Promise返回其结果。 异步等待使使用...
WME_ChatJumper 位智地图编辑器的“聊天跳线”。 /* 变更日志 0.0.7 - 修正错误,与 dummyd2 ...0.0.2 - 位置也保存在 localStorage 中,因此即使页面重新加载它也会被记住 0.0.1 - 初始版本 */ 许可证 MIT/BSD/X11