【JavaScript 封装库】BETA 1.0 测试版发布!

来源:互联网 发布:视觉检测软件 编辑:程序博客网 时间:2024/06/11 10:35
/*    源码作者: 石不易(Louis Shi)    联系方式: http://www.shibuyi.net    ===================================================================================================    程序名称: JavaScript 封装库 BETA 1.0 版    迭代版本: Prototype    功能总数: 44 个    新增总数: 30 个    删除总数: 0 个    追加功能:         1. 元素隐藏与显示        2. 表单 value 属性获取        3. 实现 mouseover / mouseout / mousemove / mousedown / mouseup / scroll / resize / load / mousewheel 等事件        4. 实现 元素居中 / 下拉菜单 / 元素拖拽 / 遮罩锁屏 / 禁止溢出 等特效        ...    优化功能:         1. 实现元素节点直传        2. 完善 id 多节点获取        3. 完善 css 设置, 支持滤镜        4. 完善 class 选择器, 支持多选择器添加和移除        5. 完善 rule 样式规则, 支持多规则的添加和移除        6. 实现二级子方法        7. 实现代码分层至 Tool 工具库        ...    删除功能:         无*/// 实例化封装库function $(_this) {return new Base(_this);}// 封装库构造方法function Base(_this) {this.elements = []; // 初始化元素列表if (typeof _this == 'object') this.elements.push(_this);}// 获取元素节点Base.prototype.getNodes = function () {if (this.elements.length == 0) return '暂无任何元素节点';if (this.elements.length == 1) return this.elements[0];return this.elements;};// 获取 id 元素节点Base.prototype.getId = function (id) {if (id instanceof Array) { // 集群for (var i = 0; i < id.length; i ++) {this.getId(id[i]);}} else { // 单个var node = {};node = document.getElementById(id);if (!node) return this;for (var i = 0; i < this.elements.length; i ++) {if (this.elements[i] == node) return this;}this.elements.push(node);}return this;};// 获取 name 元素节点Base.prototype.getName = function (name, positionId) {var nodes = {};if (typeof positionId != 'undefined') { // 局部nodes = $().getTagName('*', positionId).getNodes();} else { // 全局nodes = document.getElementsByName(name);}for (var i = 0; i < nodes.length; i ++) {if (nodes[i].name == name) this.elements.push(nodes[i]);}return this;};// 获取 tagName 元素节点Base.prototype.getTagName = function (tagName, positionId) {var nodes = {};if (typeof positionId != 'undefined') { // 局部nodes = $().getId(positionId).getNodes().getElementsByTagName(tagName);} else { // 全局nodes = document.getElementsByTagName(tagName);}for (var i = 0; i < nodes.length; i ++) {this.elements.push(nodes[i]);}return this;};// 获取 class 元素节点Base.prototype.getClass = function (className, positionId) {var nodes = {}, results = [];if (typeof positionId != 'undefined') { // 局部nodes = $().getTagName('*', positionId);results = $().getClass.hasClass.call(nodes, className);} else { // 全局nodes = $().getTagName('*');results = $().getClass.hasClass.call(nodes, className);}nodes = nodes.getNodes();for (var i = 0; i < results.length; i ++) {if (results[i]) this.elements.push(nodes[i]);}return this;};// getClass 附属方法: 检测 classBase.prototype.getClass.hasClass = function (className) {var results = [];for (var i = 0; i < this.elements.length; i ++) {results.push((new RegExp('(^|\\s+)' + className + '(\\s+|$)')).test(this.elements[i].className));}return results;};// 获取与设置 innerHTML(双标记)Base.prototype.html = function (text) {if (typeof text != 'undefined') { // 设置for (var i = 0; i < this.elements.length; i ++) {this.elements[i].innerHTML = text;}} else { // 获取var html = [];for (var i = 0; i < this.elements.length; i ++) {html.push(this.elements[i].innerHTML);}if (html.length == 1) return html[0];return html;}return this;};// 获取与设置 value(表单)Base.prototype.value = function (text) {if (typeof text != 'undefined') { // 设置for (var i = 0; i < this.elements.length; i ++) {if (typeof this.elements[i].value != 'undefined') this.elements[i].value = text;}} else { // 获取var value = [];for (var i = 0; i < this.elements.length; i ++) {if (typeof this.elements[i].value != 'undefined') value.push(this.elements[i].value);}if (value.length == 1) return value[0];return value;}return this;};// 获取与设置 CSSBase.prototype.css = function (cssKey, cssValue) {if (typeof cssValue != 'undefined' || cssKey instanceof Array) { // 设置if (cssKey instanceof Array) { // 集群var _cssKey = '', _cssValue = '', pattern = /^\s*([a-z]+)\s*=\s*([\w#=\s\(\.\)\-\'\"\/\\]+)\s*$/i;for (var i = 0; i < cssKey.length; i ++) {if (pattern.test(cssKey[i])) {_cssKey = pattern.exec(cssKey[i])[1];_cssValue = pattern.exec(cssKey[i])[2];for (var j = 0; j < this.elements.length; j ++) {this.elements[j].style[_cssKey] = _cssValue;}}}} else { // 单个for (var i = 0; i < this.elements.length; i ++) {this.elements[i].style[cssKey] = cssValue;}}} else { // 获取var css = [], _cssValue = '';for (var i = 0; i < this.elements.length; i ++) {_cssValue = Tool.getStyle(this.elements[i], cssKey);if (typeof _cssValue != 'undefined') css.push(_cssValue);}if (css.length == 1) return css[0];return css;}return this;};// 添加 classBase.prototype.addClass = function (className) {if (className instanceof Array) { // 集群for (var i = 0; i < className.length; i ++) {this.addClass(className[i]);}} else { // 单个var results = this.getClass.hasClass.call(this, className);var space = '';for (var i = 0; i < results.length; i ++) {if (this.elements[i].className != '') space = ' ';if (!results[i]) this.elements[i].className += space + className;}}return this;};// 移除 classBase.prototype.removeClass = function (className) {if (className instanceof Array) { // 集群for (var i = 0; i < className.length; i ++) {this.removeClass(className[i]);}} else { // 单个var results = this.getClass.hasClass.call(this, className);for (var i = 0; i < results.length; i ++) {if (results[i]) this.elements[i].className = this.elements[i].className.replace(new RegExp('(^|\\s)' + className + '(\\s|$)'), '');}}return this;};// 添加 ruleBase.prototype.addRule = function (ruleName, ruleText, positionIndex, sheetIndex) {if (ruleName instanceof Array) { // 集群if (!ruleText instanceof Array || ruleName.length != ruleText.length) return this;for (var i = 0; i < ruleName.length; i ++) {this.addRule(ruleName[i], ruleText[i], positionIndex, sheetIndex);}} else { // 单个var rule = this.addRule.checkRule(positionIndex, sheetIndex);if (typeof rule.sheetObject != 'undefined') {if ((positionIndexMax = Tool.getRules(rule.sheetObject).length) < rule.positionIndex) rule.positionIndex = positionIndexMax;Tool.addRule(rule.sheetObject, ruleName, ruleText, rule.positionIndex);}}return this;};// addRule 附属方法: rule 容错处理Base.prototype.addRule.checkRule = function (positionIndex, sheetIndex, positionLength) {if (typeof positionIndex == 'undefined' || isNaN(positionIndex)) positionIndex = 0;if (typeof sheetIndex == 'undefined' || isNaN(sheetIndex)) sheetIndex = 0;if (typeof positionLength == 'undefined' || isNaN(positionLength)) positionLength = 1;return {positionIndex : positionIndex,positionLength : positionLength,sheetObject : document.styleSheets[sheetIndex]}};// 删除 ruleBase.prototype.removeRule = function (positionIndex, positionLength, sheetIndex) {var rule = this.addRule.checkRule(positionIndex, sheetIndex, positionLength);if ((positionIndexMax = Tool.getRules(rule.sheetObject).length) <= rule.positionIndex || (positionIndexMax - rule.positionIndex) < rule.positionLength) return this;for (var i = 0; i < rule.positionLength; i ++) {Tool.removeRule(rule.sheetObject, rule.positionIndex);}return this;};// 显示元素Base.prototype.show = function () {for (var i = 0; i < this.elements.length; i ++) {$(this.elements[i]).css('display', 'block');}return this;};// 隐藏元素Base.prototype.hide = function () {for (var i = 0; i < this.elements.length; i ++) {$(this.elements[i]).css('display', 'none');}return this;};// 鼠标 click 事件Base.prototype.click = function (method) {if (method instanceof Function) {for (var i = 0; i < this.elements.length; i ++) {this.elements[i].onclick = function (eventObject) {method.call(this, Tool.getEvent(eventObject));};}}return this;};// 鼠标 mouseover 事件Base.prototype.mouseover = function (method) {if (method instanceof Function) {for (var i = 0; i < this.elements.length; i ++) {this.elements[i].onmouseover = function (eventObject) {method.call(this, Tool.getEvent(eventObject));};}}return this;};// 鼠标 mouseout 事件Base.prototype.mouseout = function (method) {if (method instanceof Function) {for (var i = 0; i < this.elements.length; i ++) {this.elements[i].onmouseout = function (eventObject) {method.call(this, Tool.getEvent(eventObject));};}}return this;};// 鼠标 mousedown 事件Base.prototype.mousedown = function (method) {if (method instanceof Function) {for (var i = 0; i < this.elements.length; i ++) {this.elements[i].onmousedown = function (eventObject) {method.call(this, Tool.getEvent(eventObject));};}}return this;};// 鼠标 mousemove 事件Base.prototype.mousemove = function (method) {if (method instanceof Function) {for (var i = 0; i < this.elements.length; i ++) {this.elements[i].onmousemove = function (eventObject) {method.call(this, Tool.getEvent(eventObject));};}}return this;};// 鼠标 mouseup 事件Base.prototype.mouseup = function (method) {if (method instanceof Function) {for (var i = 0; i < this.elements.length; i ++) {this.elements[i].onmouseup = function (eventObject) {method.call(this, Tool.getEvent(eventObject));};}}return this;};// 鼠标 mousewheel 事件Base.prototype.mousewheel = function (method) {if (method instanceof Function) {for (var i = 0; i < this.elements.length; i ++) {Tool.mousewheelEvent(this.elements[i], method);}}return this;};// 元素 load 事件Base.prototype.load = function (method) {if (method instanceof Function) {for (var i = 0; i < this.elements.length; i ++) {this.elements[i].onload = function (eventObject) {method.call(this, Tool.getEvent(eventObject));};}}return this;};// 元素 scroll 事件Base.prototype.scroll = function (method) {if (method instanceof Function) {for (var i = 0; i < this.elements.length; i ++) {this.elements[i].onscroll = function (eventObject) {method.call(this, Tool.getEvent(eventObject));};}}return this;};// 窗口 resize 事件Base.prototype.resize = function (method) {if (method instanceof Function) {window.onresize = function (eventObject) {method.call(this, Tool.getEvent(eventObject));};}return this;};// 鼠标 hover 特效Base.prototype.hover = function (overMethod, outMethod) {this.mouseover(overMethod);this.mouseout(outMethod);return this;};// 元素居中显示特效Base.prototype.center = function () {var innerRectangle = Tool.getInnerRectangle();var rectangle = {}, fixedX = 0, fixedY = 0, minX = 0, minY = 0, maxX = 0, maxY = 0;for (var i = 0; i < this.elements.length; i ++) {this.center.absolutePosition(this.elements[i]);rectangle = this.center.getRectangle(this.elements[i]);maxX = innerRectangle.innerWidth - rectangle.width;maxY = innerRectangle.innerHeight - rectangle.height;fixedX = maxX / 2;fixedY = maxY / 2;if (fixedX < minX) {fixedX = minX;} else if (fixedX > maxX) {fixedX = maxX;}if (fixedY < minY) {fixedY = minY;} else if (fixedY > maxY) {fixedY = maxY;}$(this.elements[i]).css(['left = ' + fixedX + 'px', 'top = ' + fixedY + 'px']);}return this;};// center 隶属方法: 获取元素长度Base.prototype.center.getRectangle = function (elementNode) {var _this = $(elementNode);var width = _this.css('width');var height = _this.css('height');var display = _this.css('display');if (display != 'none' || width == 'auto' || height == 'auto') {_this.show();width = elementNode.offsetWidth;height = elementNode.offsetHeight;}width = this.split(width, 'px');height = this.split(height, 'px');return {width : width,height : height}};// center 隶属方法: 裁剪字符串Base.prototype.center.split = function (string, pattern) {if (typeof string == 'string') {if (string.indexOf(pattern) != -1) string = string.replace(pattern, '');}return string;};// center 隶属方法: 元素设置绝对定位Base.prototype.center.absolutePosition = function (elementNode) {if ($(elementNode).css('position') != 'absolute') {$(elementNode).css(['position = absolute', 'left = 0', 'top = 0']);}};// 屏幕遮罩特效: 锁屏Base.prototype.lock = function () {var screenLock = $().getId('screen_lock').getNodes(); // 获取锁屏节点// 锁屏节点智能生成if (typeof screenLock == 'object') { // 存在this.lock.comment(screenLock); // 清除注释if (this.lock.trim($(screenLock).html()).length != 0) {this.lock.deleteElement('id = screen_lock');screenLock = this.lock.createElement('div', 'id = screen_lock');}} else { // 不存在screenLock = this.lock.createElement('div', 'id = screen_lock'); // 创建锁屏节点}$(document.documentElement).css('overflow', 'hidden');Tool.scrollInitialization();var innerRectangle = Tool.getInnerRectangle();this.center.absolutePosition(screenLock);var _this = $(screenLock);// 锁屏样式_this.css(['width = ' + innerRectangle.innerWidth + 'px', 'height = '  + innerRectangle.innerHeight +'px','backgroundColor = black','opacity = 0.4', // W3C 透明效果'filter = alpha(opacity = 40)', // IE 6/7/8 透明效果'zIndex = 10']).show();// IE 6/7/8 与 Chrome 鼠标滚轮 BUG 处理_this.mousedown(function () { // 禁用 IE 6/7/8 鼠标默认行为_this.mousemove(function (eventObject) {Tool.preventEventDefault(eventObject);});_this.mouseup(function () {_this.mousedown(function () {return null;});_this.mouseup(function () {return null;});});});_this.mousewheel(function (eventObject) { // Chrome 禁用鼠标滚轮Tool.preventEventDefault(eventObject);});return this;};// 屏幕遮罩特效: 销锁Base.prototype.unlock = function () {var screenLock = $().getId('screen_lock').getNodes();if (typeof screenLock == 'object') {$(screenLock).hide();$(document.documentElement).css('overflow', 'auto');}return this;};// lock 隶属方法: 匹配元素属性Base.prototype.lock.matchAttribute = function (pattern, attribute, elementNode) {if (pattern.test(attribute)) {var attributeKey = pattern.exec(attribute)[1];var attributeValue = pattern.exec(attribute)[2];if (attributeKey == 'class') attributeKey = 'className';if (typeof elementNode == 'object') elementNode[attributeKey] = attributeValue;return {attributeKey : attributeKey,attributeValue : attributeValue}}};// lock 隶属方法: 创建元素Base.prototype.lock.createElement = function (elementName, attribute, html, parentElement) {if (typeof parentElement == 'undefined') parentElement = document.body;var elementNode = document.createElement(elementName);if (typeof attribute != 'undefined') {var pattern = /^\s*([a-z]+)\s*=\s*([\w\-\s\.\\\/\=\(\)]+)\s*$/i;if (attribute instanceof Array) {for (var i = 0; i < attribute.length; i ++) {this.matchAttribute(pattern, attribute[i], elementNode);}} else {this.matchAttribute(pattern, attribute, elementNode);}}if (typeof html == 'string') {$(elementNode).html(html);}parentElement.appendChild(elementNode);return elementNode;};// lock 隶属方法: 删除元素Base.prototype.lock.deleteElement = function (attribute) {if (typeof attribute != 'undefined') {if (attribute instanceof Array) {for (var i = 0; i < attribute.length; i ++) {this.deleteElement(attribute[i]);}} else {var pattern = /^\s*(id|class|className|name)\s*=\s*([\w\-\s\.\\\/\=\(\)]+)\s*$/i;var nodes = [], parentElement = {};if (pattern.test(attribute)) {arrtibuteObject = $().lock.matchAttribute(pattern, attribute);switch (arrtibuteObject.attributeKey) {case 'id' :nodes = $().getId(arrtibuteObject.attributeValue).getNodes();break;case 'name':nodes = $().getName(arrtibuteObject.attributeValue).getNodes();break;case 'className' :nodes = $().getClass(arrtibuteObject.attributeValue).getNodes();break;}} else { // tagNamenodes = $().getTagName(attribute).getNodes();}if (nodes instanceof Array) {for (var i = 0; i < nodes.length; i ++) {parentElement = nodes[i].parentNode;if (typeof parentElement == 'undefined') continue;parentElement.removeChild(nodes[i]);}} else {parentElement = nodes.parentNode;if (typeof parentElement == 'undefined') return false;parentElement.removeChild(nodes);}}}};// lock 隶属方法: 清除字符串首位空格Base.prototype.lock.trim = function (string) {var leftPattern = /^([\s ]+)/;var rightPattern = /([\s ]+)$/;if (leftPattern.test(string)) string = string.replace(leftPattern, '');if (rightPattern.test(string)) string = string.replace(rightPattern, '');return string;};// lock 隶属方法: 清除元素内部注释Base.prototype.lock.comment = function (elementNode) {if (elementNode.id != '') var nodes = $().getTagName('!', elementNode.id).getNodes(); // IE 6/7/8if (typeof nodes != 'object') nodes = elementNode.childNodes; // W3Cfor (var i = 0; i < nodes.length; i ++) {if (nodes[i].nodeType == 8) elementNode.removeChild(nodes[i]);}return elementNode;};// lock 隶属方法: 清除元素内部空白文本节点Base.prototype.lock.spaceNode = function (elementNode) {var nodes = elementNode.childNodes;for (var i = 0; i < nodes.length; i ++) {if (nodes[i].nodeType == 3 && /^([ \s]+)$/.test(nodes[i].nodeValue)) elementNode.removeChild(nodes[i]);}return elementNode;};// 元素拖拽特效Base.prototype.drag = function (mode) {if (typeof mode == 'undefined') mode = true;this.mousedown(function (eventObject) {// 拖拽模式选择: true 拖拽元素自身、false 拖拽父级元素var _this = mode ? this : this.parentNode;$().lock.comment(_this);if ($().lock.trim($(_this).html()).length == 0) Tool.preventEventDefault(eventObject); // 兼容 Firefox 低版本拖拽 BUG// 设置绝对定位$().center.absolutePosition(_this);// 捕获鼠标当前坐标var mouseX = eventObject.clientX;var mouseY = eventObject.clientY;// 获取元素外边距var outerRectangle = $().drag.getOuterRectangle(_this);// 获取固定距离var fixedX = mouseX - outerRectangle.outerX;var fixedY = mouseY - outerRectangle.outerY;var innerRectangle = Tool.getInnerRectangle();var rectangle = $().center.getRectangle(_this);// 设置容错距离var minX = 0, minY = 0, maxX = 0, maxY = 0;maxX = innerRectangle.innerWidth - rectangle.width;maxY = innerRectangle.innerHeight - rectangle.height;// 兼容 IE 6/7/8 拖拽 BUGTool.setCaptureIE(_this);$(document).mousemove(function (eventObject) {// 捕获鼠标当前坐标mouseX = eventObject.clientX;mouseY = eventObject.clientY;// 获取元素位置var moveX = mouseX - fixedX;var moveY = mouseY - fixedY;if (moveX < minX) {moveX = minX;} else if (moveX > maxX) {moveX = maxX;}if (moveY < minY) {moveY = minY;} else if (moveY > maxY) {moveY = maxY;}$(_this).css(['left = ' + moveX + 'px', 'top = ' + moveY + 'px']);});$(document).mouseup(function () {// 兼容 IE 6/7/8 拖拽 BUGTool.releaseCaptureIE(_this);$(document).mousemove(function () {return null;});return null;});});return this;};// drag 隶属方法: 获取元素外边距Base.prototype.drag.getOuterRectangle = function (elementNode) {var _this = $(elementNode);var outerX = _this.css('left');var outerY = _this.css('top');var display = _this.css('display');if (display != 'none' || outerX == 'auto' || outerY == 'auto') {_this.show();outerX = elementNode.offsetLeft;outerY = elementNode.offsetTop;}outerX = _this.center.split(outerX, 'px');outerY = _this.center.split(outerY, 'px');return {outerX : outerX,outerY : outerY}};// 防止元素溢出Base.prototype.overflow = function () {var innerRectangle = Tool.getInnerRectangle();var outerRectangle = {}, rectangle = {}, minX = 0, minY = 0, maxX = 0, maxY = 0;for (var i = 0; i < this.elements.length; i ++) {this.center.absolutePosition(this.elements[i]);outerRectangle = this.drag.getOuterRectangle(this.elements[i]);rectangle = this.center.getRectangle(this.elements[i]);maxX = innerRectangle.innerWidth - rectangle.width;maxY = innerRectangle.innerHeight - rectangle.height;if (outerRectangle.outerX < minX) {outerRectangle.outerX = minX;} else if (outerRectangle.outerX > maxX) {outerRectangle.outerX = maxX;}if (outerRectangle.outerY < minY) {outerRectangle.outerY = minY;} else if (outerRectangle.outerY > maxY) {outerRectangle.outerY = maxY;}$(this.elements[i]).css(['left = ' + outerRectangle.outerX + 'px', 'top = ' + outerRectangle.outerY + 'px']);}return this;};

/*源码作者: 石不易(Louis Shi)联系方式: http://www.shibuyi.net===================================================================================================程序名称: JavaScript 工具库(跨浏览器兼容) BETA 1.0 版迭代版本: 无功能总数: 17 个功能介绍: 1. 实现获取计算样式2. 样式规则添加和移除3. 获取事件对象 event4. 取消事件默认行为与冒泡处理5. 现代事件绑定添加和移除...*/var Tool = {// 跨浏览器获取计算后的样式getStyle : function (elementNode, cssKey) {if (typeof window.getComputedStyle != 'undefined') { // W3Creturn window.getComputedStyle(elementNode, null)[cssKey];} else if (typeof elementNode.currentStyle != 'undefined') { // IE 6/7/8return elementNode.currentStyle[cssKey];}},// 跨浏览器添加 ruleaddRule : function (sheetObject, ruleName, ruleText, positionIndex) {if (typeof sheetObject.insertRule != 'undefined') { // W3CsheetObject.insertRule(ruleName + ' {' + ruleText + '}', positionIndex);} else if (typeof sheetObject.addRule != 'undefined') { // IE 6/7/8sheetObject.addRule(ruleName, ruleText, positionIndex);}},// 跨浏览器移除 ruleremoveRule : function (sheetObject, positionIndex) {if (typeof sheetObject.deleteRule != 'undefined') { // W3CsheetObject.deleteRule(positionIndex);} else if (typeof sheetObject.removeRule != 'undefined') { // IE 6/7/8sheetObject.removeRule(positionIndex);}},// 跨浏览器获取rule集合getRules : function (sheetObject) {if (typeof sheetObject.cssRules != 'undefined') { // W3Creturn sheetObject.cssRules;} else if (typeof sheetObject.rules != 'udnefined') { // IE 6/7/8return sheetObject.rules;}},// 数组排序sort : function () {return {minToMax : function (min, max) { // 正序: 从小到大排序if (min < max) {return -1;} else if (min > max) {return 1;} else {return 0;}},maxToMin : function (min, max) { // 倒序: 从大到小排序if (min < max) {return 1;} else if (min > max) {return -1;} else {return 0;}}}},// 跨浏览器获取 event 对象getEvent : function (eventObject) {if (typeof eventObject == 'object') return eventObject; // W3Creturn window.event; // IE 6/7/8},// 跨浏览器获取事件绑定所属元素引用getEventTarget : function (eventObject) {eventObject = this.getEvent(eventObject);if (typeof eventObject.target != 'undefined') { // W3Creturn eventObject.target;} else if (typeof eventObject.srcElement != 'undefined') { // IE 6/7/8return eventObject.srcElement;}},// 跨浏览器取消事件默认行为preventEventDefault : function (eventObject) {eventObject = this.getEvent(eventObject);if (typeof eventObject.cancelable != 'undefined' && typeof eventObject.preventDefault != 'undefined') { // W3Cif (eventObject.cancelable) eventObject.preventDefault();} else { // IE 6/7/8eventObject.returnValue = false;}},// 跨浏览器取消事件冒泡cancelEventPropagation : function (eventObject) {eventObject = this.getEvent(eventObject);if (typeof eventObject.bubbles != 'undefined' && typeof eventObject.stopPropagation != 'undefined') { // W3Cif (eventObject.bubbles) eventObject.stopPropagation();} else if (typeof eventObject.cancelBubble != 'undefined') { // IE 6/7/8eventObject.cancelBubble = true;}},// 事件名称容错处理checkEventName : function (eventName) {if (typeof eventName == 'string' && eventName.indexOf('on') == 0) eventName = eventName.substring(2, eventName.length);return eventName;},// 跨浏览器现代事件绑定: 注册事件loginEvent : function (elementNode, eventName, method) {eventName = this.checkEventName(eventName);if (typeof elementNode.addEventListener != 'undefined') { // W3CelementNode.addEventListener(eventName, method, false);} else if (typeof elementNode.attachEvent != 'undefined') { // IE 6/7/8elementNode.attachEvent('on' + eventName, method);}},// 款浏览器现代事件绑定: 注销事件logoutEvent : function (elementNode, eventName, method) {eventName = this.checkEventName(eventName);if (typeof elementNode.removeEventListener != 'undefined') { // W3CelementNode.removeEventListener(eventName, method, false);} else if (typeof elementNode.detachEvent != 'undefined') { // IE 6/7/8elementNode.detachEvent('on' + eventName, method);}},// 跨浏览器绑定鼠标滚轮事件mousewheelEvent : function (elementNode, method) {if (typeof elementNode.onmousewheel != 'undefined') { // 非 FirefoxelementNode.onmousewheel = function (eventObject) {method.call(this, Tool.getEvent(eventObject));};} else { // Firefoxthis.loginEvent(elementNode, 'DOMMouseScroll', method);}},// 跨浏览器获取网页可视区长度getInnerRectangle : function () {var width = 0; height = 0;if (typeof window.innerWidth != 'undefined' && typeof window.innerHeight != 'undefined') { // W3Cwidth = window.innerWidth;height = window.innerHeight;} else { // IE 6/7/8width = document.documentElement.clientWidth;height = document.documentElement.clientHeight;}return {innerWidth : width,innerHeight : height}},// 跨浏览器滚动条重置scrollInitialization : function () {document.documentElement.scrollTop = 0; // 非 Chrome / Safaridocument.documentElement.scrollLeft = 0; // 非 Chrome / Safaridocument.body.scrollTop = 0; // Chrome / Safaridocument.body.scrollLeft = 0; // Chrome / Safari},// IE 浏览器独占: 监听鼠标点击setCaptureIE : function (elementNode) {if (typeof elementNode.setCapture != 'undefined') {elementNode.setCapture();}},// IE 浏览器独占: 监听释放鼠标releaseCaptureIE : function (elementNode) {if (typeof elementNode.releaseCapture != 'undefined') {elementNode.releaseCapture();}}};

关于 BETA 1.0 测试版核心源码与实例演示的获取请移动至官网下载!


感谢大家积极评测给予意见!


官网地址:http://www.shibuyi.net

CNBlogs 博客:http://www.cnblogs.com/shibuyi/

CSDN 博客:http://blog.csdn.net/louis_shi/

ITeye 博客:http://shibuyi.iteye.com/


0 0
原创粉丝点击