简单的 基于seajs一个base基础库
define(function(require,exports,module){ var base = {};var isIE_v=(function(){if (!!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1)) {return true;} else{return false; };}()); base.isIE = isIE_v;//浏览器 宽度与高度base.getBrowserWindowSize = (function () {var de = document.documentElement;return {width: window.innerWidth ||(de&&de.clientWidth) || document.body.clientWidth,height: window.innerHeight || (de && de.clientWidth) || document.body.clientWidth}} ());base.$=function(){var elements=[],element;for (var i = 0,max=arguments.length; i < max; i++) {if (typeof arguments[i] === 'string') {element = document.getElementById(arguments[i]);} else {element = arguments[i];}if (max==1) {return element}else{elements.push(element)};};return elements;};//得到节点下的第一个元素子节点 如没有返回nullbase.getFirstElementNode = function (node) {if (!(node = base.$(node))) { return false };if (node.children.length > 0) {if (node.firstElementChild) {return node.firstElementChild;} else {return node.firstChild;}} else {return null;}};//得到节点下的最后一个子节点 如没有返回null base.getLastElementNode=function(node){if (!(node=base.$(node))) { return false};if(node.children.length>0){if (node.lastElementChild) {return node.lastElementChild;} else{return node.lastChild;}} else{return null;} }; //得到节点下面的直接元素子节点集合(第一层) base.getElementsNode=function(parentnode){if(!(parentnode=base.$(parentnode))){return false;}return parentnode.children; }; //获得元素节点的下一个节点 如果为最后一个返回null base.getNextElementNode=function(node){if (!(node = base.$(node))) { return false; };var lastnode=base.getLastElementNode(node.parentNode);if(lastnode!=node){if(node.nextElementSibling){return node.nextElementSibling;} else{return node.nextSibling;}} else{return null;} };//获得元素节点的上一个节点 如果节点为第一个则返回null base.getPreElementNode=function(node){if (!(node = base.$(node))) { return false; }var firstnode=base.getFirstElementNode(node.parentNode);if(firstnode!=node){if(node.previousElementSibling){return node.previousElementSibling;} else{return node.previousSibling;}} else{return null;} };//新元素插入指定元素后面 base.insertAfter = function (newnode, node) {if (!(newnode = base.$(newnode)) || !(node = base.$(node))) { return false; }var parent = node.parentNode;if (base.getLastElementNode(parent) == node) {parent.appendChild(newnode);} else {parent.insertBefore(newnode, base.getNextElementNode(node));} };//添加元素到第一个子节点 base.prependChild = function (newnode,parent) {if (!(newnode = base.$(newnode)) || !(parent = base.$(parent))) { return false; }var firstElementNode = base.getFirstElementNode(parent);if (firstElementNode) {parent.insertBefore(newnode, firstElementNode);} else { parent.appendChild(newnode);} };//删除元素的所有子节点 base.removeChildRen = function (parent) {if (!(parent = base.$(parent))) { return false; }while (parent.firstChild) {parent.firstChild.parentNode.removeChild(parent.firstChild);}return parent; };//得到元素的文本节点 base.getElementText = function (node) {var t = "";var node = node.childNodes || node;var length = node.length;for (var i = 0; i < length; i++) { t += node[i].nodeType != 1 ? node[i].nodeValue : getElementText(node[i].childNodes);}return t; }//创建元素 base.createElement = function (tagname, attr) {var element = null;if (typeof tagname === "string") {element = document.createElement(tagname);var key, keyattr;for (key in attr) {key = key.toLowerCase();if (key == "styles" && typeof attr[key] === "object") {for (keyattr in attr[key]) {element.style[keyattr] = attr[key][keyattr];if (keyattr == "opacity") {base.setOpacity(element, attr[key][keyattr]);}}} else if (key == "classname" && typeof attr[key] === "string") {base.addClass(element, attr[key]);} else { if (key == "id" && typeof attr[key] === "string") {element.setAttribute("id", attr[key]);} else {element.setAttribute(key, attr[key]);}}}}return element; } //元素可见性切换 base.toggleDisplay=function(node,value){if (!(node = base.$(node))) { return false; };if (node.style.display!='none') {node.style.display='none';} else{node.style.display=value||'';}return true; }; base.hasClass = function (el,classname) {if (!(el = base.$(el))) { return false; }var aelclassname = base.stringToArray(el.className),aclassname = base.stringToArray(classname),length = aclassname.length,re = true;for (var i = 0; i < length; i++) {if (!aelclassname.contains(aclassname[i])) {re = false;}}return re; }base.addClass = function (el,classname) {if (!(el = base.$(el))) { return false; }var aelclassname = base.stringToArray(el.className),aclassname = base.stringToArray(classname);el.className = base.array.union(aelclassname, aclassname).join(' ');return el; } base.removeClass = function (el, classname) {if (!(el = base.$(el))) { return false; }var aelclassname = base.stringToArray(el.className),aclassname = base.stringToArray(classname);el.className = base.array.minus(aelclassname, aclassname).join(' ');return el; }//根据class获得元素 base.getElementsByClassName = function (classname, parentnode, tagname) {var s = (parentnode || document).getElementsByTagName(tagname || "*"),classarr = base.FormatString(classname).split(' '),classlength = classarr.length;return function () {var a = [],lenght = s.length;for (var i = 0; i < lenght; i++) {if (!s[i].className) { continue; };if (base.hasClass(s[i], classname)) {a.push(s[i]);}}return a;}(); };//class切换 单个类 base.toggleClass = function (node, classname) {if (!(node = base.$(node))) { return false; }var classname = base.trim(classname);if (base.hasClass(node, classname)) {base.removeClass(node, classname);} else {base.addClass(node, classname);} }//设置元素的透明度 base.setOpacity=function(node,level){if(!(node=base.$(node))){ return false;}if(base.isIE){node.style.filter="alpha(opacity="+level+")";} else{node.style.opacity=level/100; } }; //获取元素的样式 base.getStyle=function(node,stylename){if(!(node=base.$(node))) {return false;}if (node.currentStyle) {return node.currentStyle[stylename];} else{return node.ownerDocument.defaultView.getComputedStyle(node,null)[stylename]; } } //去除字符串两边的空白 base.trim = function (str) {return base.isString(str)===true?str.replace(/(^\s*)|(\s*$)/g, ""):false; };//去除字符串左边的空白 base.Ltrim = function (str) {return base.isString(str) === true ? str.replace(/(^\s*)/g, "") : false; };//去除字符串右边的空白 base.Rtrim = function (str) {return base.isString(str) === true ? str.replace(/(\s*$)/g, "") : false; };//字符串中的多个空白替换为单个空白 base.Ctrim = function (str) {return base.isString(str) === true ? str.replace(/\s+/g, ' ') : false; } base.FormatString = function (str) {if (base.isString(str)) {return base.Ctrim(base.trim(str));} else { return false;} }//字符串转换数组 base.stringToArray = function (str, s) {var s = s || ' ';return base.FormatString(str).split(s); }//字符串重复 base.repeatString = function (str, num) {var temp = '';for (var i = 0; i < num; i++) {temp += str;}return temp; }//检查输入的字符串 base.isNumber=function(str){return Object.prototype.toString.call(str)==="[object Number]"; }; base.isString=function(str){return Object.prototype.toString.call(str) === "[object String]"; }; base.isBoolean=function(str){return Object.prototype.toString.call(str) === "[object Boolean]"; }; base.isObject = function (str) {return Object.prototype.toString.call(str) === "[object Object]"; } base.isArray = function (str) {return Object.prototype.toString.call(str) === "[object Array]" && Array.isArray(str);}; base.isFunction=function(obj){return Object.prototype.toString.call(obj) === "[object Function]";}; base.isNull = function () {return str === null;}; base.isEmpty=function(str){return /^\s*$/.test(str);}; base.isUndefined=function(str){return typeof str === "undefined"; }; base.addEvent = function (node, type, fn) {if(!(node=base.$(node))){return false;}if (base.isIE) {node.attachEvent('on'+type,fn);} else if(document.addEventListener){node.addEventListener(type, fn, false);} else{node['on'+type]=fn;} }; base.removeEvent = function (node, type, fn) {if (!(node = base.$(node))) { return false; }if (base.isIE) {node.detachEvent('on'+type,fn); } else if(document.addEventListener){node.removeEventListener(type,fn,false);} else{node['on'+type]=null;} };//获得事件对象 base.getEventObject = function (event) {return event || window.event; }//取消事件的默认事件 base.preventDefault = function (event) {var ev = event || base.getEventObject(event);if (ev.preventDefault) {ev.preventDefault();} else { ev.returnValue = false;} }//得到事件目标对象 base.getEventTarget=function(e){var ev = e || base.getEventObject(e);var target = e.target || e.srcElement;//safariif (target.nodeType == 3) {target = target.parentNode;} }; //取消冒泡事件 base.stopPropagation = function (e) {var ev = e || base.getEventObject(e);if (base.isIE) {ev.cancelBulle = true;} else{ev.stopPropagation();}; };//得到鼠标按键 base.getMouseButton = function (event) {var ev = event || base.getEventObject(event);var buttons = {'left': false,'middle': false,'right': false};if (ev.toString() && ev.toString().indexOf("MouseEvent") != -1) { switch (ev.button) {case 0: buttons.left = true;break;case 1: buttons.middle = true;break;case 2: buttons.right = true;break;default: break; }} else if (ev.button) {switch (ev.button) {case 1: buttons.left = true;break;case 2: buttons.right = true;break;case 3: buttons.left = true; buttons.right = true;break;case 4: buttons.middle = true;break;case 5: buttons.left = true; buttons.middle = true;break;case 6: buttons.middle = true; buttons.right = true;break;case 7: buttons.left = true; buttons.middle = true; buttons.right = true;break;default: break;}} else {return false;}return buttons; }//得到鼠标的位置 相对于文档原点 base.getMousePointPositionInDocument = function (event) {var ev = event || base.getEventObject(event);var x = ev.pageX || ev.clientX + (document.body.scrollLeft || document.documentElement.scrollLeft);var y = ev.pageY || ev.clientY + (document.body.scrollTop || document.documentElement.scrollTop);return {'x': x,'y':y} }//得到键盘按键信息 base.getKeyPress = function (event) {var ev = event || base.getEventObject(event);var code = ev.keyCode;var value = String.fromCharCode(code);return { 'code': code, 'value': value }; }//得到url的参数 base.getQueryString = function (name) {var reg = new RegExp("(^|&)" + name + "=([^&*])(&|$)","i");var r = window.location.search.substr(1).match(reg);if (r != null) {return unescape(r[2]);} else {return null;} }//基本的cookie操作 base.cookie = {read: function (name) {var cookieStr = ";" + document.cookie + ";";var index = cookieStr.indexOf("; " + name + "=");if (index != -1) {var s = cookieStr.substring(index + name.length + 3, cookieStr.length);return unescape(s.substring(0, s.indexOf("; ")));} else {return null;}},set: function (name, value, expires) {var expDays = expires * 24 * 60 * 60 * 1000;var expDate = new Date();expDate.setTime(expDate.getTime() + expDays);var expString = expires ? "; expires=" + expDate.toGMTString() : "";var pathString = ";path=/";document.cookie = name + "=" + escape(value) + expString + pathString;},del: function (name) {var exp = new Date(new Date().getTime() - 1);var s = this.read(name);if (s != null) {document.cookie = name + "=" + s + ";expires = " + exp.toGMTString() + ";path=/"}} }//数组的遍历 base.forEach = (function () {//数组与伪数组的遍历 context var _Array_forEach = function (array, block, context) {if (array == null) return;//对String进行特殊处理if (base.isString(array)) {array = array.split('');}var i = 0, length = array.length;for (; i < length && block.call(context, array[i], (i + 1), array) !== false; i++) { }};//对象的遍历var _Function_forEach = function (object, block, context) {for (var key in object) {//只遍历本地属性 if (object.hasOwnProperty(key) && block.call(context, object[key], key, object) === false) {break;}}};return function (object, block, context) {if (object == null) return;if (base.isNumber(object.length)) {_Array_forEach(object, block, context);} else {_Function_forEach(object, block, context);}}; })()//两个数组的操作 基于第一个数组 base.array = {//两个数组的交集intersect: function (a, b) {return a.uniquelize().each(function (o) { return b.contains(o) ? o : null; });},//两个数组的差集minus: function (a,b) {return a.uniquelize().each(function (o) { return b.contains(o) ? null : o; })},//两个数组的并集union: function (a, b) {return a.concat(b).uniquelize();},//两个数组的补集complement: function (a,b) {return this.minus(this.union(a, b), this.intersect(a, b));} }//对原型的扩展 Array.prototype.contains = function (el) {return RegExp("\\b" + el + "\\b").test(this); } Array.prototype.each = function (fn) {var arr = [];var args = Array.prototype.slice.call(arguments, 1);var length = this.length;for (var i = 0; i < length; i++) {var erg = fn.apply(this, [this[i], i].concat(args));if (erg != null) {arr.push(this[i]);}}return arr; } Array.prototype.uniquelize = function () {var newarr = [];var length = this.length;for (var i = 0; i < length; i++) {if (!newarr.contains(this[i])) {newarr.push(this[i]);}}return newarr; }module.exports=base;})
以前写的一些方法集合 初步用seajs来进行模块化开发 考虑最多的 是兼容性的问题 . 只是一些方法的堆积,没有模式,感觉最简单的一个了. 学到兼容性的问题 也是一个进步.
转载于:https://www.cnblogs.com/wangzp/p/3287355.html
简单的 基于seajs一个base基础库相关推荐
- yue-library是一个基于SpringBoot封装的基础库
yue-library是一个基于SpringBoot封装的基础库
- Chromium源码—base基础库说明
Chromium 基础库概览 Chromium 基础库包括的内容十分繁杂,我把其中的主要部分大致分为以下几类: 1. 容器类型 Chromium 的代码主要使用 STL 容器类型,比如 std::ve ...
- android sqlite 操作类封装,SQLiteUtils 一个简单的基于 Android 的 Sqlite 数据库的操作封装库 @codeKK Android开源站...
一个简单的基于 Android 的 Sqlite 数据库的操作封装,它有如下的好处: 便捷地创建表和增添表字段 通过操作对象来 insert 或者 update 表记录 支持多种查询方式,支持分页查询 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十九)——分布式事务之Saga模式...
目录: 一.通过Dapr实现一个简单的基于.net的微服务电商系统 二.通过Dapr实现一个简单的基于.net的微服务电商系统(二)--通讯框架讲解 三.通过Dapr实现一个简单的基于.net的微服务 ...
- 如何开发一个基于 Vue 的 ui 组件库
如何开发一个基于 Vue 的 ui 组件库 开发模式 预览 demo 在开发一个 ui 组件库时,肯定需要一边预览 demo,一边修改代码. 常见的解决方案是像开发一般项目一样使用 webpack-d ...
- 基于内容推荐python_用 Python 实现一个简单的基于内容的推荐引擎
原标题:用 Python 实现一个简单的基于内容的推荐引擎 (点击上方公众号,可快速关注) 英文:Chris Clark 译文:伯乐在线专栏作者 - yaoyujia 链接:http://python ...
- 一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库 RxJava,相当好...
RxJava 是他们的基础组件,RxAndroid, Retrofit, RxCache等等都要用到它. https://github.com/ReactiveX/RxJava https://git ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十八)——服务保护之多级缓存...
很久没有更新dapr系列了.今天带来的是一个小的组件集成,通过多级缓存框架来实现对服务的缓存保护,依旧是一个简易的演示以及对其设计原理思路的讲解,欢迎大家转发留言和star 目录: 一.通过Dapr实 ...
- 通过Dapr实现一个简单的基于.net的微服务电商系统(十七)——服务保护之动态配置与热重载...
在上一篇文章里,我们通过注入sentinel component到apigateway实现了对下游服务的保护,不过受限于目前变更component需要人工的重新注入配置以及重启应用更新componen ...
最新文章
- \V110\Microsoft.CppCommon.targets(347,5): error MSB6006: “CL.exe”已退出,代码为 -1073741515。的解决方法
- 3.4.1 单表查询
- 鸟哥的Linux私房菜(基础篇)- 一些基础的Linux 问题
- 西北农林科技大学与陕西师范大学计算机,这所大学有点“惨”,本身是“双一流”高校,却被说成野鸡大学...
- openstack rabbitmq
- python找出主力合约价格_如何找出全部期货主力合约和次主力合约?
- ZooKeeper典型应用场
- Bailian2790 迷宫【DFS】
- cad尺寸标注快捷键_CAD快速标注方法你知道几种?
- silklabo哪个公众号有资源_公众号和头条号,做哪个赚钱?
- 使用kubeadm在CentOS上搭建Kubernetes1.14.3集群
- 标注工具Brat安装(本地)
- VMware 安装WIN10 WIN7
- MySQL 索引介绍!
- 路由器交换机设备管理
- js中向对象添加键值对, 如 var data={1:'a' } ,添加 { 2:'b' }
- 美元指数回落美债收益率下跌,金价未能实现五连涨
- python的turtle画小绵羊_Python作图
- 25个例子学会Pandas Groupby 操作(附代码)
- subprocess 模块(了解)