miniui 加载文件时会做的一些事情
开始学习miniui了,虽然代码里有很多0o1l之类的,大概学一学还是可以的吧。
首先在miniui.js看一下有文档加载时会自动执行什么。先列举一下。
1、
OO00(window, "resize", function($) {var C = mini.__windowResizes;for (var _ = 0,A = C.length; _ < A; _++) {var B = C[_];B[0][Oloool](B[1], $)} });
2、
mini_onload = function($) {OO00(window, "resize", mini_onresize) }; OO00(window, "load", mini_onload);
3、
OO00(window, "unload", mini_unload);
4、
(function() {if (hasOn) {var A = mini.getTopWindow();if (A) {function $(_, $) {if ($ == document);else jQuery(document).trigger("mousedown")}jQuery(A.document)[O10lO0]("topmousedown", $);function _(_) {var $ = A.jQuery;if ($) $(A.document).trigger("topmousedown", [document])}jQuery(document)[O10lO0]("mousedown", _);jQuery(window)[O10lO0]("unload",function() {jQuery(A.document).off("topmousedown", $);jQuery(document).off("mousedown", _)})}} })();
5、
var DateUtil = {}; (function() {DateUtil.dateFormat = {days: {names: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],namesAbbr: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],namesShort: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]},months: {names: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", ""],namesAbbr: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", ""]},AM: ["AM", "am", "AM"],PM: ["PM", "pm", "PM"],patterns: {d: "M/d/yyyy",D: "dddd,MMMM dd,yyyy",F: "dddd,MMMM dd,yyyy h:mm:ss tt",g: "M/d/yyyy h:mm tt",G: "M/d/yyyy h:mm:ss tt",m: "MMMM dd",M: "MMMM dd",s: "yyyy'-'MM'-'dd'T'HH':'mm':'ss",t: "h:mm tt",T: "h:mm:ss tt",u: "yyyy'-'MM'-'dd HH':'mm':'ss'Z'",y: "MMMM,yyyy",Y: "MMMM,yyyy"},"/": "/",":": ":",firstDay: 0};
6、
(function() {var A = {tabindex: "tabIndex",readonly: "readOnly","for": "htmlFor","class": "className",maxlength: "maxLength",cellspacing: "cellSpacing",cellpadding: "cellPadding",rowspan: "rowSpan",colspan: "colSpan",usemap: "useMap",frameborder: "frameBorder",contenteditable: "contentEditable"},$ = document.createElement("div");$.setAttribute("class", "t");var _ = $.className === "t";mini.setAttr = function(B, C, $) {B.setAttribute(_ ? C: (A[C] || C), $)};mini.getAttr = function(D, E) {if (E == "height") return jQuery(D).attr("height");if (E == "value" && (isIE6 || isIE7)) {var $ = D.attributes[E];return $ ? $.value: null}if (!D.getAttribute) return null;var C = D.getAttribute(_ ? E: (A[E] || E));if (typeof C == "function" || E == "maxLength") {var F = D.attributes[E];if (F) C = F.value}if (!C && E == "onload") {var B = D.getAttributeNode ? D.getAttributeNode(E) : null;if (B) C = B.nodeValue}return C} })();
还有一些我认为是在jQuery加载完毕之后执行:
1、
jQuery(function() {if (document.body) document.body.style.visibility = "visible";if (isFirefox) oO1l(document.documentElement, "ff");mini.updateDevice();if (mini.autoParse) setTimeout(function() {var _ = document.documentElement;if ((isIE6 || isIE7) && (loo10o(document.body, "overflow") == "hidden" || (_ && loo10o(_, "overflow") == "hidden"))) {jQuery(document.body).css("overflow", "visible");if (_) jQuery(_).css("overflow", "visible")}mini.__LastWindowWidth = document.documentElement.clientWidth;mini.__LastWindowHeight = document.documentElement.clientHeight;var $ = new Date();mini.isReady = true;mini.parse(null, mini_layoutOnParse);OlO0o1()},1) });
2、
jQuery(function() {setTimeout(function() {var A = mini.getComponents();for (var B = 0,C = A.length; B < C; B++) {var _ = A[B];if (_ instanceof Olo01l) {var $ = _[o000l1]().value;if (_.value !== $) _.value = $}}},300) });
3、
jQuery(function() {setTimeout(function() {try {var $ = mini.getActiveElement();if ($) {var A = jQuery($).closest(".mini-buttonedit,.mini-textbox");if (A.length) {var B = mini.get(A[0]);if (B) {B[lll0O1]();B[o1OOlO]()}}}} catch(_) {}},100) });
然后说一下上面的1,2,3。
它们会先向windows对象 apply事件 resize、onload、unload
创建委托添加到mini.listeners中
通过OO00 :
oOl11 = “findListener”OO00 = function(_, D, B, A) {_ = l1O1(_);A = A || _;if (!_ || !D || !B || !A) return false;var C = mini[oOl11](_, D, B, A);//判断该listener是否已经存在if (C) return false;var $ = mini.createDelegate(B, A);//如果不存在就创建委托,通过apply方法通过对象A来执行,这时候A为windowmini.listeners.push([_, D, B, A, $]);//添加到mini.listeners数组中if (mini.isFirefox && D == "mousewheel") D = "DOMMouseScroll";jQuery(_).bind(D, $) };
l1O1在这里没什么用,还是返回window本身,看一下代码:
//找到该元素,B可以是元素,也可以是id/#id //既然document.getElementById() 不能找到元素, //为什么还要通过后续的操作,去遍历子节点判断id呢? //可能是构建了一个节点,并没有添加到DOM上。这样子的情况下B为子节点的id,_为父节点 l1O1 = function(B, _) {if (typeof B == "string") {if (B.charAt(0) == "#") B = B.substr(1);var $ = document.getElementById(B);if ($) return $;if (_ && !O1O0(document.body, _)) {var D = _.getElementsByTagName("*");for (var A = 0,C = D.length; A < C; A++) {$ = D[A];if ($.id == B) return $}$ = null}return $} else return B };
然后判断事件是否已经存在:
//判断该listener是否已经存在 findListener: function(A, F, C, B) {A = l1O1(A);B = B || A;if (!A || !F || !C || !B) return false;var _ = mini._getListeners();for (var E = _.length - 1; E >= 0; E--) {var D = _[E];try {if (D[0] == A && D[1] == F && D[2] == C && D[3] == B) return D} catch($) {}}}, _getListeners: function() {var $ = mini.listeners;//是mini对象的数组对象return $},
如果没有存在,就创建委托,并保存它。【注意apply的用法,$是window,还是不清楚通过这样子怎么触发对应的事件处理程序】
/创建委托,并通过$对象来执行该方法,返回的是一个方法 createDelegate: function(_, $) {if (!_) return function() {};return function() {return _.apply($, arguments)}},
通过这样,在不添加任何js代码程序的情况下,的确绑定好了对应的事件处理程序。
比较有趣的是jQuery中的方法1的处理,里面有mini.parse()的调用。如果我们能够在此方法执行完毕之后再执行自己的js代码,那么我们就不用再写mini.parse()了。
下次再说说自己的mini.parse()和源文件中的mini.parse()的调用。其他一些执行的方法也之后看看做了一些什么事情。
good night.
转载于:https://www.cnblogs.com/jianIsTheBest/p/11210503.html
miniui 加载文件时会做的一些事情相关推荐
- 【转载】ADS分散加载文件使用总结(lpc23xx)
有如下分散加载文件: ROM_LOAD 0x00000000 ;// Origination Point of Code (Code in Flash) { ROM_ ...
- html资源加载,如何加载文件资源 (HTML)
如何加载文件资源 (HTML) 01/28/2016 本文内容 [ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员.如果你要针对 ...
- 未能加载文件或程序集“SqlServerDal”或它的某一个依赖项。系统找不到指定的文件。...
今天遇到一个挺怪的问题,采用了工厂模式后,出去找不到程序集的问题: 未能加载文件或程序集"Tianyige.SqlServerDAL"或它的某一个依赖项.系统找不到指定的文件. 解 ...
- 未能加载文件或程序集mysql.web.v20__关于MySQL Server影响ASP.NET网站使用的问题:未能加载文件或程序集MySql.Web.v20...
标签: 最近开发的ASP.NET MVC 4网站,之前头头说如果遇到装过MySQL的机器就绕着走,还觉得奇怪 嘛,该来的迟早都会来 于是撞上了一台 启动网站再访问,总是出错,提示"未能加载文 ...
- 未能加载文件或程序集Tianyige.SqlServerDAL问题解决
解决思路: 以前遇到过这类问题,问题在于对程序集和命名空间名称混淆了,比如:命名空间叫SQLServerDAL,而程序集可能叫"Tianyige.SQLServerDAL",或者叫 ...
- 从MDK分散加载文件学习STM32启动流程
一直在用ARM的Cortex-M系列做产品开发,也陆陆续续学习了ARM的启动流程.汇编启动文件,但是总感觉没有连贯的把全部知识串起来,不知道某些汇编语句为什么要这么写,没法按照自己的情况进行修改.今天 ...
- 【Godot】加载文件数据
Godot 3.3 rc6 接着上个教程 [GDScript]装备栏 我们开始给物品数据加载出来,之前使用资源的方式是用来加载小量数据的,如果是大量数据,那就不可避免需要加载文件中的数据. 加载数据代 ...
- 未能加载文件或程序集“XXX.dll”或它的某个依赖项的解决方法
问题: 昨天从开发机拷贝exe程序到测试机上测试时,发现程序一运行就报以下错误:未能加载文件或程序集"A.dll"或它的某一个依赖项.找不到指定的模块. 相关知识: 1.应用程序查 ...
- C# 调用NationalInstruments的dll报错问题 未能加载文件或程序集
C# 调用NationalInstruments的dll报错问题 问题原因:dll版本不匹配导致的,需要做如下操作解决问题 未能加载文件或程序集"NationalInstruments.Co ...
最新文章
- 线程通信问题--生产者和消费者问题
- java8 camel_Meet Fabric8:基于Camel和ActiveMQ的开源集成平台
- Magento 获取系统设置 How to get data from Magento System Configuration
- 虚拟机控制数据结构 (VMCS)状态转换
- linux定时任务crontab的设置
- BTREE这种Mysql默认的索引方式,具有普遍的适用性
- 基于隐式调用风格的kwic实现
- Java的OOP编程思想
- 2022年五一数学建模竞赛C题
- SPEI不同时间尺度的意义
- 2016河南省第九届ACM程序设计竞赛[正式赛四]
- 前端开发程序员的月薪到底有多高?
- 2021-11-07算法的本质是什么?
- 为什么Multi-DRM如此重要?
- 大话设计模式之爱你一万年:大话设计模式之爱你一万年由来
- 将旧硬盘的内容克隆到新硬盘
- IOS获取崩溃日志信息
- 查询具体到时分秒的时间段数据(查询昨天的下午四点到今天的下午四点的数据)
- Python 2.7和NLTK安装教程
- 最大公因数GCD的分配律、结合律 - 证明及其简单应用