自己根据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

相关文章

JS+HTML实现在线图片水印添加工具

《JS+HTML实现在线图片水印添加工具》在社交媒体和内容创作日益频繁的今天,如何保护原创内容、展示品牌身份成了一个不得不面对的问题,本文将实现一个完全基于HTML+CSS构建的现代化图片水印在线工具... 目录概述功能亮点使用方法技术解析延伸思考运行效果项目源码下载总结概述在社交媒体和内容创作日益频繁的

Node.js 数据库 CRUD 项目示例详解(完美解决方案)

《Node.js数据库CRUD项目示例详解(完美解决方案)》:本文主要介绍Node.js数据库CRUD项目示例详解(完美解决方案),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考... 目录项目结构1. 初始化项目2. 配置数据库连接 (config/db.js)3. 创建模型 (models/

使用Node.js制作图片上传服务的详细教程

《使用Node.js制作图片上传服务的详细教程》在现代Web应用开发中,图片上传是一项常见且重要的功能,借助Node.js强大的生态系统,我们可以轻松搭建高效的图片上传服务,本文将深入探讨如何使用No... 目录准备工作搭建 Express 服务器配置 multer 进行图片上传处理图片上传请求完整代码示例

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

SpringBoot中封装Cors自动配置方式

《SpringBoot中封装Cors自动配置方式》:本文主要介绍SpringBoot中封装Cors自动配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录SpringBoot封装Cors自动配置背景实现步骤1. 创建 GlobalCorsProperties

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