mass的domReady方案

mass框架的domReady解决方案

 1 //mass的domReady方案
 2 var readyList = [];
 3 mass.ready = function(fn) {
 4     if (readyList) {
 5         fn.push(fn);
 6     } else {
 7         fn();
 8     }
 9 }
10 var readyFn, ready = W3C ? "DOMContentLoaded" : "readystatechange";
11 function fireReady() {
12     for (var i = 0, fn; fn = readyList[i++]; ) {
13         fn();
14     }
15     readyList = null;
16     fireReady = $.noop;    //惰性函数,防止IE9二次调用_checkDeps
17 }
18
19 function doScrollCheck() {
20     try {    //IE下通过doScrollCheck检测DOM树是否建完
21         html.doScroll("left");
22         fireReady();
23     } catch (e) {
24         setTimeout(doScrollCheck);
25     }
26 }
27
28 //在Firefix3.6之前,不存在readyState属性
29 if (!DOC.readyState) {
30     var readyState = DOC.readyState = DOC.body ? "complete" : "loading";
31 }
32 if (DOC.readyState === "complete") {
33     fireReady();    //如果在domReady之外加载
34 } else {
35     $.bind(DOC, ready, readyFn = function() {
36         if (W3C || DOC.readyState === "complete") {
37             fireReady();
38             if (readyState) {    //IE下不能改写DOC.readyState
39                 DOC.readyState = "complete";
40             }
41         }
42     });
43     if (html.doScroll) {
44         try {    //如果跨域会报错,那时肯定证明是存在两个窗口的
45             if (self.eavl === parent.eval) {
46                 doScrollCheck();
47             }
48         } catch (e) {
49             doScrollCheck();
50         }
51     }
52 }
时间: 2024-12-28 23:58:17

mass的domReady方案的相关文章

mass种子模块之domready

总结:由于IE6/7/8不支持DOMContentLoaded事件,虽然它支持onreadystatechange事件,但是readyState=complete几乎和onload事件一样,需要等页面中的外部资源加载完后才触发,想要尽快可采用doScroll检测法(仅在非iframe下有效) 1 var turbo = turbo || {}; 2 var W3C = document.addEventListener ? true : false; 3 var doc = document,

OnLoad & DOMReady

window.onload 事件会在页面或图像加载完成后立即触发(即所有元素的资源都下载完毕).如果页面上有许多图片.音乐或falsh,onload事件会迟迟无法触发.所以出现了DOM Ready事件. 此事件在DOM文档结构准备完毕后触发, 即在资源加载前触发. DOMContentLoaded 事件在许多Webkit浏览器以及IE9上都可以使用, 此事件会在DOM文档准备好以后触发, 包含在HTML5标准中. 对于支持此事件的浏览器, 直接使用DOMContentLoaded事件是最简单最好

现代浏览器JS异步加载方案

好,不说废话,要凌晨了我快点写完,关于JS加载阻塞之类的不做科普,本文也不讨论IE9以下的浏览器. headjs:"异步.并行加载并按你的顺序执行",这个是最符合广大码农需求的,只是它越来越臃肿,连CSS Respone什么的都加进去了,没必要那么复杂 Loadjs:今天刚刚出现在OSC首页本人疯狂测试后发现,如果需要并行加载就是乱序的(哪个JS先下载完就先执行谁),如果要顺序下载就不能并发,经测试是下载一个执行一个,每个JS文件之间有10ms的空隙(JS下载和加载时所有渲染操作都要暂

Mass Spectrometry-Compatible Subcellular Fractionation for Proteomics 质谱兼容的蛋白质组学的亚细胞分离(解读人:王茹凯)

文献名:Mass Spectrometry-Compatible Subcellular Fractionation for Proteomics(质谱兼容的蛋白质组学的亚细胞分离) 期刊名:Jpornal of Proteome research 发表时间:(2020年1月) IF:4.173 单位: 熊本大学 京都大学 庆应大学 物种:人的细胞 技术:磷酸化蛋白质组学和蛋白质组学   一. 概述:(用精炼的语言描述文章的整体思路及结果) 本研究选取细胞进行免疫印迹法和间接免疫荧光法.Nano

MySQL分库分表方案

1. MySQL分库分表方案 1.1. 问题: 1.2. 回答: 1.2.1. 最好的切分MySQL的方式就是:除非万不得已,否则不要去干它. 1.2.2. 你的SQL语句不再是声明式的(declarative) 1.2.3. 你招致了大量的网络延时 1.2.4. 你失去了SQL的许多强大能力 1.2.5. MySQL没有API保证异步查询返回顺序结果 1.2.6. 总结 MySQL分库分表方案 翻译一个stackoverflow上的问答,关于分库分表的缺点的,原文链接: MySQL shard

C#开发微信门户及应用(47) - 整合Web API、微信后台管理及前端微信小程序的应用方案

在微信开发中,我一直强调需要建立一个比较统一的Web API接口体系,以便实现数据的集中化,这样我们在常规的Web业务系统,Winform业务系统.微信应用.微信小程序.APP等方面,都可以直接调用基于JSON数据格式的Web API接口,在我之前的几篇随笔中,对这方面都有一定的介绍,本篇继续这个主题,细致深入的阐述如何在接口和源码的基础上整合Web API.微信后台管理及前端微信小程序的应用方案. 1.基于Web API的微信开发框架 首先我们各个业务模块,都应该围绕着Web API进行展开,

redis的单机安装与配置以及生产环境启动方案

简单介绍一下redis的单机安装与配置,方便自己记录安装步骤的同时方便他人获取知识. 首先,从官网下载最新版的(稳定版)的redis安装包.官网地址如下:https://redis.io/download 下载源码包后,redis需要编译安装.需要安装gcc和tcl,gcc用于编译tcl用于测试. 使用命令安装gcc,yum install gcc,一路选择yes,gcc就可以安装成功. 接下来安装tcl,首先获取tcl源码包(见百度云盘)或者使用命令:wget http://downloads

Linux分区方案

Linux服务器分区的方案: 分区类型 分区的实际大小 / 1G-2G (最少要150–250MB) /boot 32M-100M (启动分区,最多只要100M左右) /opt 100M-1G (附加应用程序) /tmp 40M-1000M (最大可以设为1G左右,如果加载ISO镜像文件就设为4G左右吧,一般不用那么多) /home 2G-10G (每个用户100M左右,具体自定.用户目录.) /usr 3G-10G 最少要500M左右,一般宽松的服务器要分到4-6G) /usr/local 3

Java实现多线程生产者消费模型及优化方案

生产者-消费者模型是进程间通信的重要内容之一.其原理十分简单,但自己用语言实现往往会出现很多的问题,下面我们用一系列代码来展现在编码中容易出现的问题以及最优解决方案. /* 单生产者.单消费者生产烤鸭 */class Resource { private String name; private int count = 1; //计数器,记录有多少只烤鸭被生产及消费 private boolean flag = false; //停止标记 public synchronized void set