自己根据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常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

CSP 2023 提高级第一轮 CSP-S 2023初试题 完善程序第二题解析 未完

一、题目阅读 (最大值之和)给定整数序列 a0,⋯,an−1,求该序列所有非空连续子序列的最大值之和。上述参数满足 1≤n≤105 和 1≤ai≤108。 一个序列的非空连续子序列可以用两个下标 ll 和 rr(其中0≤l≤r<n0≤l≤r<n)表示,对应的序列为 al,al+1,⋯,ar​。两个非空连续子序列不同,当且仅当下标不同。 例如,当原序列为 [1,2,1,2] 时,要计算子序列 [

JavaSE——封装、继承和多态

1. 封装 1.1 概念      面向对象程序三大特性:封装、继承、多态 。而类和对象阶段,主要研究的就是封装特性。何为封装呢?简单来说就是套壳屏蔽细节 。     比如:对于电脑这样一个复杂的设备,提供给用户的就只是:开关机、通过键盘输入,显示器, USB 插孔等,让用户来和计算机进行交互,完成日常事务。但实际上:电脑真正工作的却是CPU 、显卡、内存等一些硬件元件。

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(

zeroclipboard 粘贴板的应用示例, 兼容 Chrome、IE等多浏览器

zeroclipboard单个复制按钮和多个复制按钮的实现方法 最近网站改版想让复制代码功能在多个浏览器上都可以实现,最近看网上不少说我们的代码复制功能不好用的,我们最近将会增加代码高亮等功能,希望大家多多支持我们 zeroclipboard是一个跨浏览器的库类 它利用 Flash 进行复制,所以只要浏览器装有 Flash 就可以运行,而且比 IE 的

js异步提交form表单的解决方案

1.定义异步提交表单的方法 (通用方法) /*** 异步提交form表单* @param options {form:form表单元素,success:执行成功后处理函数}* <span style="color:#ff0000;"><strong>@注意 后台接收参数要解码否则中文会导致乱码 如:URLDecoder.decode(param,"UTF-8")</strong></span>

js react 笔记 2

起因, 目的: 记录一些 js, react, css 1. 生成一个随机的 uuid // 需要先安装 crypto 模块const { randomUUID } = require('crypto');const uuid = randomUUID();console.log(uuid); // 输出类似 '9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d'