自己根据js的兼容封装了一个小小的js库,留着以后用.后期一点一点完善

2024-06-20 02:18

本文主要是介绍自己根据js的兼容封装了一个小小的js库,留着以后用.后期一点一点完善,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1 var gys = function () { }
  2 //oParent父节点
  3 //获取所有的子元素
  4 gys.prototype.getElementChildren = function (oParent) {
  5     return oParent.children;
  6 }
  7 //arr获取的数组,jsonCss是修改属性css的json数据
  8 // gys.setElementCss(aLi, {"color":"red","backgroundColor":"yellow","backgroundImage":"url(../img/test.jpg)"});
  9 //设置元素的css
 10 gys.prototype.setElementCss = function (arr, jsonCss) {
 11     var length = arr.length;
 12     if (length == 0) return; //没有元素
 13     else if (!length) { //单个元素   
 14         for (var key in jsonCss) {
 15             arr.style[key] = jsonCss[key];
 16         }
 17     }
 18     else { //元素集合
 19         for (var i = 0; i < arr.length; i  ) {
 20             for (var key in jsonCss) {
 21                 arr[i].style[key] = jsonCss[key];
 22             }
 23         }
 24     }
 25 }
 26 //获取第一个子元素
 27 gys.prototype.getElementFirstChildren = function (oParent) {
 28     if (oParent.firstElementChild)//高版本浏览器,
 29     {
 30         return oParent.firstElementChild;
 31     }
 32     else //IE6,7,8
 33         return oParent.firstChild;
 34 }
 35 //获取最后一个子元素
 36 gys.prototype.getElementLastChildren = function (oParent) {
 37     if (oParent.lastElementChild)//高版本浏览器,
 38     {
 39         return oParent.lastElementChild;
 40     }
 41     else //IE6,7,8
 42         return oParent.lastChild;
 43 }
 44 //获取下一个元素
 45 gys.prototype.getElementNext = function (element) {
 46     if (element.nextElementSibling) { //高版本浏览器
 47         return element.nextElementSibling;
 48     }
 49     else { //IE6,7,8
 50         return element.nextSibling;
 51     }
 52 }
 53 //获取上一个元素
 54 gys.prototype.getElementPrev = function (element) {
 55     if (element.previousElementSibling) {
 56         return element.previousElementSibling
 57     }
 58     else {
 59         return element.previousSibling; 
 60     }
 61 }
 62 
 63 //ajax
 64 /*
 65 gys.ajax({ type: "get", url: "gps.txt", success: function (data) {
 66                   alert("成功"   data);
 67               }, error: function (data) {
 68                   alert(data);
 69               }
 70   });
 71 */
 72 gys.prototype.ajax = function (json) {
 73     //1.创建服务器
 74     var oAjax = null;
 75     if (window.XMLHttpRequest) {
 76         oAjax = new XMLHttpRequest();
 77     }
 78     else { //IE6
 79         oAjax = new ActiveXObject("Microsoft.XMLHTTP");
 80     }
 81     /*2.连接服务器
 82     open(方法,文件名,异步传输);
 83     */
 84     //oAjax.open("GET", "gys.txt?="   new Date().getTime(), true); //这里的date是为了去除缓存
 85     oAjax.open(json.type.toUpperCase(), json.url, true);
 86     //3.发送请求
 87     oAjax.send();
 88     //4.接受返回
 89     oAjax.onreadystatechange = function () {
 90         /*
 91         oAjax.readyState:浏览器和服务器交互经行到哪一步了
 92         0:未初始化.还没有调用open()方法.
 93         1:载入.已调用send()方法,正在发送请求
 94         2:载入完成.send()方法完成,已收到全部响应内容,这个时候的数据是可能没法使用,因为这个数据是加密过的,也有可能是为了节省带宽,进行压缩过的.
 95         3:解析.正在解析相应内容
 96         4:完成.响应内容解析完成,可以在客户端调用了.                  
 97         */
 98         if (oAjax.readyState == 4) {//读取完成(并不代表成功)
 99             if (oAjax.status == 200) { //成功
100                 //alert("成功"   oAjax.responseText);
101                 json.success(oAjax.responseText);
102             }
103             else {
104                 //alert("失败");
105                 //json.error(oAjax.responseText);
106                 if (json.error) {
107                     json.error("错误:" oAjax.status);
108                 }
109             }
110         }
111     }
112 }
113 
114 //获取浏览器窗口位置
115 gys.prototype.getScreenPos = function () {
116     /*
117     IE,Safari,Opera,Chrome提供screenLeft和screenTop
118     Safari,Chrome,Firefox支持screenX和screenY(Opera对这个属性支持有差异)
119     */
120     var left = (typeof window.screenLeft == "number") ? window.screenLeft : window.screenX;
121     var top = (typeof window.screenTop == "number") ? window.screenTop : window.screenY;
122     return { left: left, top: top };
123 }
124 gys.prototype.addHandler = function (element, type, handler) {//注册事件
125     if (element.addEventListener) {//非IE
126         element.addEventListener(type, handler, false);
127     }
128     else if (element.attachEvent) {//IE
129         element.attachEvent("on"   type, handler);
130     }
131     else {//dom0级
132         element["on"   type] = handler;
133     }
134 }
135 gys.prototype.removeHandler = function (element, type, handler) { //取消注册事件
136     if (element.removeEventListener) {//非IE
137                 element.removeEventListener(type, handler, false);
138             }
139             else if (element.detachEvent) {//IE
140                 element.detachEvent("on"   type, handler);
141             }
142             else {//dom0级
143                 element["on"   type] = null;
144             }
145         }
146 gys.prototype.getEvent=function (event) {//返回event的引用
147         return event ? event : window.event;
148     }
149 gys.prototype.getTarget=function (event) {//返回鼠标单击的目标对象
150         return event.target || event.srcElement;
151     }
152 gys.prototype.preventDefault=function (event) {//取消默认事件(a的href,radio,checkbox,)
153         if (event.preventDefault) {
154             event.preventDefault();
155         }
156         else {
157             event.returnValue = false;
158         }
159     }
160 gys.prototype.stopPropagation= function (event) {//因为这个EventUtil只支持冒泡,不支持事件捕获,所以这个方法只能阻止冒泡
161         if (event.stopPrapagation) {
162             event.stopPropagation();
163         }
164         else {
165             event.cancelBubble = true;
166         }
167     }
168 gys.prototype.getRelatedTarget=function (event) {//获取相关元素
169         /*
170         页面中有一个div;当鼠标离开这个div时,事件的主目标是div,而相关元素是body.
171         mouseover:事件的主目标是获得光标的元素,而相关元素就是那个失去光标的元素.
172         mouseout:事件的主目标是失去光标的元素,而相关元素使获得光标的那个元素.
173         */
174         if (event.relatedTarget) { return event.relatedTarget; }
175         else if (event.toElement) { return event.toElement; }
176         else if (event.fromElement) { return event.fromElement; }
177         else { return null; }
178     }
179 gys.prototype.getButton= function (event) {//获取鼠标按钮的点击方式
180         if (document.implementation.hasFeature("MouseEvents", "2.0")) { return event.button; }
181         else {
182             switch (event.button) {
183                 case 0:
184                 case 1:
185                 case 3:
186                 case 5:
187                 case 7:
188                     return 0; //左击
189                 case 2:
190                 case 6:
191                     return 2; //中间键
192                 case 4:
193                     return 1; //右击
194             }
195         }
196     }
197 gys = new gys();

 

这篇关于自己根据js的兼容封装了一个小小的js库,留着以后用.后期一点一点完善的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1076823

相关文章

Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)

《Java导入、导出excel用法步骤保姆级教程(附封装好的工具类)》:本文主要介绍Java导入、导出excel的相关资料,讲解了使用Java和ApachePOI库将数据导出为Excel文件,包括... 目录前言一、引入Apache POI依赖二、用法&步骤2.1 创建Excel的元素2.3 样式和字体2.

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操

Node.js net模块的使用示例

《Node.jsnet模块的使用示例》本文主要介绍了Node.jsnet模块的使用示例,net模块支持TCP通信,处理TCP连接和数据传输,具有一定的参考价值,感兴趣的可以了解一下... 目录简介引入 net 模块核心概念TCP (传输控制协议)Socket服务器TCP 服务器创建基本服务器服务器配置选项服

mac安装nvm(node.js)多版本管理实践步骤

《mac安装nvm(node.js)多版本管理实践步骤》:本文主要介绍mac安装nvm(node.js)多版本管理的相关资料,NVM是一个用于管理多个Node.js版本的命令行工具,它允许开发者在... 目录NVM功能简介MAC安装实践一、下载nvm二、安装nvm三、安装node.js总结NVM功能简介N

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

JS 实现复制到剪贴板的几种方式小结

《JS实现复制到剪贴板的几种方式小结》本文主要介绍了JS实现复制到剪贴板的几种方式小结,包括ClipboardAPI和document.execCommand这两种方法,具有一定的参考价值,感兴趣的... 目录一、Clipboard API相关属性方法二、document.execCommand优点:缺点:

C++实现封装的顺序表的操作与实践

《C++实现封装的顺序表的操作与实践》在程序设计中,顺序表是一种常见的线性数据结构,通常用于存储具有固定顺序的元素,与链表不同,顺序表中的元素是连续存储的,因此访问速度较快,但插入和删除操作的效率可能... 目录一、顺序表的基本概念二、顺序表类的设计1. 顺序表类的成员变量2. 构造函数和析构函数三、顺序表

Go语言利用泛型封装常见的Map操作

《Go语言利用泛型封装常见的Map操作》Go语言在1.18版本中引入了泛型,这是Go语言发展的一个重要里程碑,它极大地增强了语言的表达能力和灵活性,本文将通过泛型实现封装常见的Map操作,感... 目录什么是泛型泛型解决了什么问题Go泛型基于泛型的常见Map操作代码合集总结什么是泛型泛型是一种编程范式,允

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

使用Vue.js报错:ReferenceError: “Vue is not defined“ 的原因与解决方案

《使用Vue.js报错:ReferenceError:“Vueisnotdefined“的原因与解决方案》在前端开发中,ReferenceError:Vueisnotdefined是一个常见... 目录一、错误描述二、错误成因分析三、解决方案1. 检查 vue.js 的引入方式2. 验证 npm 安装3.