我自己的Javascript 库,封装了一些常用函数 Kingwell.js

我自己的Javascript 库,封装了一些常用函数 Kingwell.js

博客分类:

javascript 库javascript

现在Javascript库海量,流行的也多,比如jQuery,YUI等,虽然功能强大,但也是不万能的,功能不可能涉及方方面面,自己写一个的JS库是对这些的补充,很多也比较实用,把应用到项目中中去也比较方面,这也是对工作的一些积累,也加深对知识的理解。

2012-6-20更新,添加设置Cookie,获取Cookie,删除Cookie方法。很实用哦.......................

2012-7-22更新,表格排序,获取URL参数,批量清除Cookie...

2012-8-24更新,动态加载JS,Ajax封装,HTML编码...

Js代码  

  1. /*
  2. * Name    : Kingwell JavaScript Library v1.5
  3. * Author  : Kingwell Leng
  4. * E-mial  : jinhua.leng ### gamil.com
  5. * Blog    : http://www.cnblogs.com/kingwell/ http://kingwell-leng.iteye.com/admin
  6. * Date    : 2013-4-31 15:07
  7. */
  8. (function (w, d) {
  9. if (!window.KW) {
  10. window.KW = {};
  11. }
  12. var location = window.location,
  13. de = d.documentElement,
  14. userAgent = navigator.userAgent.toLowerCase(),
  15. ie6 = /msie 6.0/.test(userAgent),
  16. opera = /opera/.test(userAgent),
  17. ie = /msie/.test(userAgent) && !opera,
  18. safari = /webkit/.test(userAgent),
  19. ff = /firefox/.test(userAgent);
  20. var tip = {
  21. require : ‘缺少参数,参数必须的‘,
  22. rule : ‘参数不合法‘
  23. };
  24. KW = {
  25. name : ‘Kingwell Javascript Library‘,
  26. version : ‘1.5‘,
  27. debug : true,
  28. namespace : function (name) {
  29. var parts = name.split(‘.‘);
  30. var current = KW;
  31. for (var i in parts) {
  32. if (!current[parts[i]]) {
  33. current[parts[i]] = {};
  34. }
  35. current = current[parts[i]];
  36. }
  37. },
  38. Dom : {
  39. $ : function (id) {
  40. return typeof id === ‘string‘ ? d.getElementById(id) : id;
  41. },
  42. remove : function (o) {
  43. var obj = this.$(o);
  44. if (!obj) {
  45. return;
  46. }
  47. return obj.parentNode.removeChild(obj);
  48. },
  49. setOpacity : function (obj, val) {
  50. var vals = (typeof obj === "number" && val <= 100 && val >= 0) ? val : 100;
  51. if (!obj) {
  52. return;
  53. }
  54. if (ie) {
  55. obj.style.filter = ‘alpha(opacity=‘ + vals + ‘)‘;
  56. } else {
  57. obj.style.opacity = vals / 100;
  58. }
  59. },
  60. getMaxZindex : function (o) {
  61. var maxZindex = 0;
  62. var obj = o ? o : ‘*‘;
  63. var divs = d.getElementsByTagName(obj);
  64. for (z = 0; z < divs.length; z++) {
  65. maxZindex = Math.max(maxZindex, divs[z].style.zIndex);
  66. }
  67. return maxZindex;
  68. },
  69. createElement : function (type, prop) {
  70. var tmp = d.createElement(type);
  71. for (var i in prop) {
  72. tmp.setAttribute(i, prop[i]);
  73. }
  74. return tmp;
  75. },
  76. createTextNode : function (txt) {
  77. return d.createTextNode(txt);
  78. },
  79. hasAttr : function (obj, attr) {
  80. obj.getAttribute(attr);
  81. return obj;
  82. },
  83. setAttr : function (obj, attr) {
  84. var self = this;
  85. for (var i in attr) {
  86. if (i === ‘class‘) {
  87. self.addClass(obj, attr[i]);
  88. } else {
  89. obj.setAttribute(i, attr[i]);
  90. }
  91. }
  92. return obj;
  93. },
  94. removeAttr : function (obj, attr) {
  95. obj.removeAttribute(attr);
  96. return obj;
  97. },
  98. getClass : function (c, pd) {
  99. var all = pd ? d.getElementsByName(pd).getElementsByTagName("*") : d.getElementsByTagName("*"),
  100. str = "",
  101. n = [];
  102. for (var i = 0; i < all.length; i++) {
  103. if (KW.Dom.hasClass(all[i], c)) {
  104. n.push(all[i]);
  105. }
  106. }
  107. return n;
  108. },
  109. addClass : function (o, str) {
  110. var obj = this.$(o);
  111. if (!obj) {
  112. return;
  113. }
  114. var className = obj.className;
  115. var reg = eval("/^" + str + "$ | " + str + "$|^" + str + " | " + str + " /");
  116. if (reg.test(className)) {
  117. return;
  118. }
  119. if (className !== ‘‘) {
  120. obj.className = className + " " + str;
  121. } else {
  122. obj.className = str;
  123. }
  124. },
  125. removeClass : function (o, str) {
  126. var obj = this.$(o);
  127. if (!obj) {
  128. return;
  129. }
  130. var className = obj.className;
  131. if (this.isNull(className)) {
  132. var reg = new RegExp(str, "g");
  133. var n = className.replace(reg, "");
  134. obj.className = n;
  135. }
  136. },
  137. hasClass : function (o, str) {
  138. if (!o) {
  139. return;
  140. }
  141. var obj = this.$(o);
  142. var className = obj.className;
  143. var reg = eval("/^" + str + "$| " + str + "$|^" + str + " | " + str + " /");
  144. if (reg.test(className)) {
  145. return true;
  146. } else {
  147. return false;
  148. }
  149. },
  150. html : function (obj, html) {
  151. if (html) {
  152. obj.innerHTML = html;
  153. } else {
  154. return obj.innerHTML;
  155. }
  156. },
  157. text : function (obj, text) {
  158. if (text) {
  159. if (document.textContent) {
  160. obj.textContent = text;
  161. } else {
  162. obj.innerText = text;
  163. }
  164. } else {
  165. if (document.textConten) {
  166. return obj.textContent;
  167. } else {
  168. return obj.innerText;
  169. }
  170. }
  171. }
  172. },
  173. Events : {
  174. addEvent : function (oTarget, oType, fnHandler) {
  175. var self = this;
  176. if (oTarget.addEventListener) {
  177. oTarget.addEventListener(oType, fnHandler, false);
  178. } else if (oTarget.attachEvent) {
  179. oTarget.attachEvent(‘on‘ + oType, fnHandler);
  180. } else {
  181. oTarget[‘on‘ + oType] = fnHandler;
  182. }
  183. },
  184. removeEvent : function (oTarget, oType, fnHandler) {
  185. var self = this;
  186. if (oTarget.removeEventListener) {
  187. oTarget.removeEventListener(oType, fnHandler, false);
  188. } else if (oTarget.detachEvent) {
  189. oTarget.detachEvent(‘on‘ + oType, fnHandler);
  190. } else {
  191. oTarget[‘on‘ + oType] = null;
  192. }
  193. },
  194. getEvent : function (ev) {
  195. return ev || window.event;
  196. },
  197. getTarget : function (ev) {
  198. return this.getEvent(ev).target || this.getEvent().srcElement;
  199. },
  200. stopPropagation : function () {
  201. if (window.event) {
  202. return this.getEvent().cancelBubble = true;
  203. } else {
  204. return arguments.callee.caller.arguments[0].stopPropagation();
  205. }
  206. },
  207. stopDefault : function () {
  208. if (window.event) {
  209. return this.getEvent().returnValue = false;
  210. } else {
  211. return arguments.callee.caller.arguments[0].preventDefault();
  212. }
  213. }
  214. },
  215. Ready : function (loadEvent) {
  216. if (!loadEvent) {
  217. return;
  218. }
  219. var init = function () {
  220. if (arguments.callee.done) {
  221. return;
  222. } else {
  223. arguments.callee.done = true;
  224. }
  225. loadEvent.apply(d, arguments);
  226. };
  227. if (d.addEventListener) {
  228. d.addEventListener("DOMContentLoaded", init, false);
  229. return;
  230. }
  231. if (safari) {
  232. var _timer = setInterval(function () {
  233. if (/loaded|complete/.test(d.readyState)) {
  234. clearInterval(_timer);
  235. init();
  236. }
  237. }, 10);
  238. }
  239. d.write(‘<script id="_ie_onload" defer src="javascript:void(0)"><\/script>‘);
  240. var script = d.getElementById(‘_ie_onload‘);
  241. script.onreadystatechange = function () {
  242. if (this.readyState == ‘complete‘) {
  243. init();
  244. }
  245. };
  246. return true;
  247. },
  248. Storage : {
  249. setItem : function (strName, strValue) {
  250. if (Storage) {}
  251. else if (Storage) {}
  252. else {}
  253. },
  254. getItem : function (strValue) {},
  255. removeItem : function (strValue) {},
  256. removeAll : function () {}
  257. },
  258. getScript : function (obj, callback, order) {
  259. var self = this,
  260. arr = obj,
  261. timeout,
  262. ord = order || true,
  263. num = 0,
  264. str = typeof obj === ‘string‘;
  265. if (!arr) {
  266. this.Error(tip.require);
  267. return;
  268. }
  269. function add() {
  270. if (arr[0] === undefined) {
  271. return;
  272. }
  273. var script = KW.Dom.createElement("script", {
  274. ‘src‘ : (str ? obj : arr[num]),
  275. ‘type‘ : ‘text/javascript‘
  276. }),
  277. header = d.getElementsByTagName("head")[0];
  278. if (str) {
  279. if (script.readyState) {
  280. script.onreadystatechange = function () {
  281. if (script.readyState === ‘loaded‘ || script.readyState === ‘complete‘) {
  282. script.onreadystatechange = null;
  283. callback && callback();
  284. }
  285. };
  286. } else {
  287. script.onload = function () {
  288. callback && callback();
  289. };
  290. }
  291. } else {
  292. if (arr.length >= 1) {
  293. if (script.readyState) {
  294. script.onreadystatechange = function () {
  295. if (script.readyState === ‘loaded‘ || script.readyState === ‘complete‘) {
  296. script.onreadystatechange = null;
  297. arr.shift();
  298. timeout = setTimeout(add, 1);
  299. }
  300. };
  301. } else {
  302. script.onload = function () {
  303. arr.shift();
  304. timeout = setTimeout(add, 1);
  305. };
  306. }
  307. } else {
  308. clearTimeout(timeout);
  309. callback && callback();
  310. }
  311. }
  312. header.appendChild(script);
  313. }
  314. add();
  315. },
  316. Ajax : function (obj) {
  317. if (!obj.url) {
  318. return false;
  319. }
  320. var method = obj.type || "GET";
  321. var async = obj.async || true;
  322. var dataType = obj.dataType;
  323. var XHR = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
  324. XHR.open(method, obj.url, async);
  325. XHR.setRequestHeader(‘If-Modified-Since‘, ‘Thu, 06 Apr 2006 00:00: 00 GMT‘);
  326. XHR.send(null);
  327. if (obj.sendBefore) {
  328. obj.sendBefore();
  329. }
  330. XHR.onreadystatechange = function () {
  331. if (XHR.readyState == 4 && (XHR.status >= 200 && XHR.status < 300 || XHR.status == 304)) {
  332. if (obj.success) {
  333. if (dataType && dataType.toLocaleLowerCase() === "json") {
  334. obj.success.call(XHR, eval("(" + XHR.responseText + ")"));
  335. } else if (dataType && dataType.toLocaleLowerCase() === "xml") {
  336. obj.success.call(XHR, XHR.responseXML);
  337. } else {
  338. obj.success.call(XHR, XHR.responseText);
  339. }
  340. }
  341. if (obj.complete) {
  342. obj.complete();
  343. }
  344. } else {
  345. if (obj.complete) {
  346. obj.complete();
  347. }
  348. }
  349. };
  350. },
  351. Cookies : {
  352. setCookie : function (sName, sValue, oExpires, sPath, sDomain, bSecure) {
  353. var sCookie = sName + ‘=‘ + encodeURIComponent(sValue);
  354. if (oExpires) {
  355. var date = new Date();
  356. date.setTime(date.getTime() + oExpires * 60 * 60 * 1000);
  357. sCookie += ‘; expires=‘ + date.toUTCString();
  358. }
  359. if (sPath) {
  360. sCookie += ‘; path=‘ + sPath;
  361. }
  362. if (sDomain) {
  363. sCookie += ‘; domain=‘ + sDomain;
  364. }
  365. if (bSecure) {
  366. sCookie += ‘; secure‘;
  367. }
  368. d.cookie = sCookie;
  369. },
  370. getCookie : function (sName) {
  371. var sRE = ‘(?:; )?‘ + sName + ‘=([^;]*)‘;
  372. var oRE = new RegExp(sRE);
  373. if (oRE.test(d.cookie)) {
  374. return decodeURIComponent(RegExp[$1]);
  375. } else {
  376. return null;
  377. }
  378. },
  379. removeCookie : function (sName, sPath, sDomain) {
  380. this.setCookie(sName, ‘‘, new Date(0), sPath, sDomain);
  381. },
  382. clearAllCookie : function () {
  383. var cookies = d.cookie.split(";");
  384. var len = cookies.length;
  385. for (var i = 0; i < len; i++) {
  386. var cookie = cookies[i];
  387. var eqPos = cookie.indexOf("=");
  388. var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
  389. name = name.replace(/^\s*|\s*$/, "");
  390. d.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/";
  391. }
  392. }
  393. },
  394. tabSort : function (sTableID, iCol, sDataType) { //排序函数,sTableID为目标,iCol哪列排序,为必需,sDataType可选
  395. var oTable = document.getElementById(sTableID);
  396. var oTBody = oTable.tBodies[0];
  397. var colDataRows = oTBody.rows;
  398. var aTRs = [];
  399. var len = colDataRows.length;
  400. function convert(sValue, sDataType) { //类型转,根据不同类型数据排序,比如,整型,日期,浮点,字符串,接受两个参数,一个是值,一个是排序的数据类型
  401. switch (sDataType) {
  402. case "int":
  403. return parseInt(sValue);
  404. case "float":
  405. return parseFloat(sValue);
  406. case "date":
  407. return new Date(Date.parse(sValue));
  408. default:
  409. return sValue.toString();
  410. }
  411. }
  412. function geterateCompareTRs(iCol, sDataType) { //比较函数,用于sort排序用
  413. return function compareTRs(oTR1, oTR2) {
  414. var vValue1,
  415. vValue2;
  416. if (oTR1.cells[iCol].getAttribute("value")) { //用于高级排序,比如图片,添加一个额外的属性来排序
  417. vValue1 = convert(oTR1.cells[iCol].getAttribute("value"), sDataType);
  418. vValue2 = convert(oTR2.cells[iCol].getAttribute("value"), sDataType);
  419. } else {
  420. vValue1 = convert(oTR1.cells[iCol].firstChild.nodeValue, sDataType);
  421. vValue2 = convert(oTR2.cells[iCol].firstChild.nodeValue, sDataType);
  422. }
  423. if (vValue1 < vValue2) {
  424. return -1;
  425. } else if (vValue1 > vValue2) {
  426. return 1;
  427. } else {
  428. return 0;
  429. }
  430. };
  431. }
  432. for (var i = 0; i < len; i++) {
  433. aTRs[i] = colDataRows[i];
  434. }
  435. if (oTable.sortCol == iCol) { //如果已经排序,则倒序
  436. aTRs.reverse();
  437. } else {
  438. aTRs.sort(geterateCompareTRs(iCol, sDataType));
  439. }
  440. var oFragment = document.createDocumentFragment();
  441. var trlen = aTRs.length;
  442. for (var j = 0; j < trlen; j++) {
  443. oFragment.appendChild(aTRs[j]);
  444. }
  445. oTBody.appendChild(oFragment);
  446. oTable.sortCol = iCol; //设置一个状态
  447. },
  448. Browse : {
  449. isIE : ie,
  450. isFF : ff
  451. },
  452. trim : function (str) {
  453. var re = /^\s*(.*?)\s*$/;
  454. return str.replace(re, ‘$1‘);
  455. },
  456. escape : function (str) {
  457. var s = "";
  458. if (str.length === 0) {
  459. return "";
  460. }
  461. s = str.replace(/&/g, "&amp;");
  462. s = s.replace(/</g, "&lt;");
  463. s = s.replace(/>/g, "&gt;");
  464. s = s.replace(/ /g, "&nbsp;");
  465. s = s.replace(/\‘/g, "'");
  466. s = s.replace(/\"/g, "&quot;");
  467. return s;
  468. },
  469. getQueryString : function (name) {
  470. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  471. var r = location.search.substr(1).match(reg);
  472. if (r !== null)
  473. return unescape(r[2]);
  474. return null;
  475. },
  476. Error : function (obj, info) {
  477. if (!this.debug) {
  478. return;
  479. }
  480. throw Error(obj);
  481. }
  482. };
  483. Kingwell = KW;
  484. })(window, document);

不断地完善中....有些功能正在做,有些还在测试,现在还不完善。

时间: 2024-12-24 09:26:17

我自己的Javascript 库,封装了一些常用函数 Kingwell.js的相关文章

javascript基础一语法和常用函数

1语法 1.1引入的方式 在html中引入javascript,使用script标签,在html页面中包括外部引入js方式和在html内部引入js方式.如下两种: 方式一: <script type="text/javascript">要写的javascript内容</script> 方式二: <script type="text/javascript" src="引入外部的js文件"></script&

miracl库下椭圆曲线方程常用函数使用入门

下面列举了椭圆曲线GF(p)素数域常用函数:(持续更新) 1.椭圆曲线方程初始化ecurve_initFunction: void ecurve_init(A,B,p,type) big A,B,p; int type;Module: mrcurve.cDescription: Initialises the internal parameters of the current active GF(p) elliptic curve. The curve is assumed to be of

流行的JavaScript库 ——jQuery

1.为了简化 JavaScript 的开发, 一些 JavsScript 库诞生了. JavaScript 库封装了很多预定义的对象和实用函数.能帮助使用者建立有高难度交互的 Web2.0 特性的富客户端页面, 并且兼容各大浏览器.当前流行的 JavaScript 库有:jQuery, MooTools, Prototype, Dojo, YUI, EXT_JS  DWR 2.jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多javascript高手加入其team. j

JavaScript库——jQuery

导入jQuery库 1.直接连接网上的 https://code.jquery.com/jquery/+版本号 2.也可到官网下载jquery库到本地 JavaScript 库作用及对比 为了简化 JavaScript 的开发, 一些 JavsScript 库诞生了. JavaScript 库封装了很多预定义的对象和实用函数.能帮助使用者建立有高难度交互的 Web2.0 特性的富客户端页面, 并且兼容各大浏览器 当前流行的 JavaScript 库有: jQuery 是继 Prototype 之

19个很有用的 JavaScript库推荐

流行的 JavaScript 库有jQuery,MooTools,Prototype,Dojo和YUI等,这些 JavaScript 库功能丰富,加上它们众多的插件,几乎能实现任何你需要的功能 然而需要实现一些特定的功能,则可以选择功能更专一的轻量库,今天这篇文章与大家分享16个很有用的 JavaScript 库. Blackbird: Open Source JavaScript Logging UtilityBlackbird 是一款非常酷的 JavaScript 调试工具,带有一个漂亮的界

开发者必备的 12 个 JavaScript 库

现在 web 设计是最有趣的了,做好 web 设计不仅要熟练使用 Javascript,css 和 html 等,还要有自己的创意设计.为了方便大家发挥自己的创意,就产生了很多 JS 框架,Node.js 扩展等等.有了这些工具,开发者们就能专注于创意设计了,而不用为某个功能而花费太多精力.这里我们介绍的是 12 个开发者们必备的 JavaScript 库,都是一些很基础功能很强大的库.有了这些库,开发者们可以节省很多时间,大大提高开发的效率,所以大家赶紧收藏起来吧:) 1) Headroom.

2015年10个最佳Web开发JavaScript库

2015年10个最佳Web开发JavaScript库 现在的互联网可谓是无所不有,有大量的JavaScript项目开发工具充斥于网络中.我们可以参考网上的指导来获取构建代码项目的各种必要信息.如果你是搞Web开发的,那么大多更喜欢支持前端开发的JavaScript.此脚本语言使用相对比较容易,并能为网站和Web应用创造了有趣的用户界面.下面是10个最佳的可用于Web项目开发的JavaScript库. 1. IO.js: IO.js是一个以Chrome V8  runtime为引擎的JavaScr

为新项目添彩的 10+ 超有用 JavaScript 库

快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中. <HTML开发Mac OS App 视频教程> 土豆网同步更新:http://www.tudou.com/plcover/VHNh6ZopQ4E/ 百度网盘同步:http://pan.baidu.com/s/1jG1Q58M 分享  [中文纪录片]互联网时代   http://pan.baidu.com/s/1qWkJfcS 官方QQ群:(申请加入,说是我推荐的) App实践出真知 4

如何实现jQuery与其他javascript库兼容

如何实现jQuery与其他javascript库兼容: 在使用jquery的时候,可能会出现与其他的javascript库冲突的情况,下面就介绍一下如何解决此问题. 解决方法就是使用jQuery的jQuery.noConflict()函数来避免冲突. jQuery.noConflict()函数简单介绍: 此函数可以将$的控制权让渡给后面第一个实现它的javascript库,在运行这个函数之后就只能够使用jQuery访问jQuery对象了,例如: $("div")需要改写成jQuery(