var gys = function () { }
//oParent父节点
//获取所有的子元素
gys.prototype.getElementChildren = function (oParent) {
return oParent.children;
}
//arr获取的数组,jsonCss是修改属性css的json数据
// gys.setElementCss(aLi, {"color":"red","backgroundColor":"yellow","backgroundImage":"url(../img/test.jpg)"});
//设置元素的css
gys.prototype.setElementCss = function (arr, jsonCss) {
var length = arr.length;
if (length == 0) return; //没有元素
else if (!length) { //单个元素
for (var key in jsonCss) {
arr.style[key] = jsonCss[key];
}
}
else { //元素集合
for (var i = 0; i < arr.length; i++) {
for (var key in jsonCss) {
arr[i].style[key] = jsonCss[key];
}
}
}
}
//获取第一个子元素
gys.prototype.getElementFirstChildren = function (oParent) {
if (oParent.firstElementChild)//高版本浏览器,
{
return oParent.firstElementChild;
}
else //IE6,7,8
return oParent.firstChild;
}
//获取最后一个子元素
gys.prototype.getElementLastChildren = function (oParent) {
if (oParent.lastElementChild)//高版本浏览器,
{
return oParent.lastElementChild;
}
else //IE6,7,8
return oParent.lastChild;
}
//获取下一个元素
gys.prototype.getElementNext = function (element) {
if (element.nextElementSibling) { //高版本浏览器
return element.nextElementSibling;
}
else { //IE6,7,8
return element.nextSibling;
}
}
//获取上一个元素
gys.prototype.getElementPrev = function (element) {
if (element.previousElementSibling) {
return element.previousElementSibling
}
else {
return element.previousSibling;
}
} //ajax
/*
gys.ajax({ type: "get", url: "gps.txt", success: function (data) {
alert("成功" + data);
}, error: function (data) {
alert(data);
}
});
*/
gys.prototype.ajax = function (json) {
//1.创建服务器
var oAjax = null;
if (window.XMLHttpRequest) {
oAjax = new XMLHttpRequest();
}
else { //IE6
oAjax = new ActiveXObject("Microsoft.XMLHTTP");
}
/*2.连接服务器
open(方法,文件名,异步传输);
*/
//oAjax.open("GET", "gys.txt?=" + new Date().getTime(), true); //这里的date是为了去除缓存
oAjax.open(json.type.toUpperCase(), json.url, true);
//3.发送请求
oAjax.send();
//4.接受返回
oAjax.onreadystatechange = function () {
/*
oAjax.readyState:浏览器和服务器交互经行到哪一步了
0:未初始化.还没有调用open()方法.
1:载入.已调用send()方法,正在发送请求
2:载入完成.send()方法完成,已收到全部响应内容,这个时候的数据是可能没法使用,因为这个数据是加密过的,也有可能是为了节省带宽,进行压缩过的.
3:解析.正在解析相应内容
4:完成.响应内容解析完成,可以在客户端调用了.
*/
if (oAjax.readyState == 4) {//读取完成(并不代表成功)
if (oAjax.status == 200) { //成功
//alert("成功" + oAjax.responseText);
json.success(oAjax.responseText);
}
else {
//alert("失败");
//json.error(oAjax.responseText);
if (json.error) {
json.error("错误:"+oAjax.status);
}
}
}
}
} //获取浏览器窗口位置
gys.prototype.getScreenPos = function () {
/*
IE,Safari,Opera,Chrome提供screenLeft和screenTop
Safari,Chrome,Firefox支持screenX和screenY(Opera对这个属性支持有差异)
*/
var left = (typeof window.screenLeft == "number") ? window.screenLeft : window.screenX;
var top = (typeof window.screenTop == "number") ? window.screenTop : window.screenY;
return { left: left, top: top };
}
gys.prototype.addHandler = function (element, type, handler) {//注册事件
if (element.addEventListener) {//非IE
element.addEventListener(type, handler, false);
}
else if (element.attachEvent) {//IE
element.attachEvent("on" + type, handler);
}
else {//dom0级
element["on" + type] = handler;
}
}
gys.prototype.removeHandler = function (element, type, handler) { //取消注册事件
if (element.removeEventListener) {//非IE
element.removeEventListener(type, handler, false);
}
else if (element.detachEvent) {//IE
element.detachEvent("on" + type, handler);
}
else {//dom0级
element["on" + type] = null;
}
}
gys.prototype.getEvent=function (event) {//返回event的引用
return event ? event : window.event;
}
gys.prototype.getTarget=function (event) {//返回鼠标单击的目标对象
return event.target || event.srcElement;
}
gys.prototype.preventDefault=function (event) {//取消默认事件(a的href,radio,checkbox,)
if (event.preventDefault) {
event.preventDefault();
}
else {
event.returnValue = false;
}
}
gys.prototype.stopPropagation= function (event) {//因为这个EventUtil只支持冒泡,不支持事件捕获,所以这个方法只能阻止冒泡
if (event.stopPrapagation) {
event.stopPropagation();
}
else {
event.cancelBubble = true;
}
}
gys.prototype.getRelatedTarget=function (event) {//获取相关元素
/*
页面中有一个div;当鼠标离开这个div时,事件的主目标是div,而相关元素是body.
mouseover:事件的主目标是获得光标的元素,而相关元素就是那个失去光标的元素.
mouseout:事件的主目标是失去光标的元素,而相关元素使获得光标的那个元素.
*/
if (event.relatedTarget) { return event.relatedTarget; }
else if (event.toElement) { return event.toElement; }
else if (event.fromElement) { return event.fromElement; }
else { return null; }
}
gys.prototype.getButton= function (event) {//获取鼠标按钮的点击方式
if (document.implementation.hasFeature("MouseEvents", "2.0")) { return event.button; }
else {
switch (event.button) {
case 0:
case 1:
case 3:
case 5:
case 7:
return 0; //左击
case 2:
case 6:
return 2; //中间键
case 4:
return 1; //右击
}
}
}
gys = new gys();

自己根据js的兼容封装了一个小小的js库的更多相关文章

  1. 自己封装的一个原生JS拖动方法。

    代码: function drag(t,p){ var point = p || null, target = t || null, resultX = 0, resultY = 0; (!point ...

  2. vue.js+web storm安装及第一个vue.js

    小白还是自己写一遍吧 1.下载node.js https://nodejs.org/en/download/ 2.安装淘宝镜像(类似于阿里云的maven中央仓库镜像) 安装时间有点长 安装命令:npm ...

  3. JS类的封装及实现代码

    js并不是一种面向对向的语言, 没有提供对类的支持, 因此我们不能像在传统的语言里那样 用class来定义类, 但我们可以利用js的闭包封装机制来实现js类, 我们来封装一个简的Shape类. 1. ...

  4. 使用原生JS实现一个风箱式的demo,并封装了一个运动框架

    声明,该DEMO依托于某个培训机构中,非常感谢这个培训结构.话不多说,现在开始改demo的制作. 首先,在前端的学习过程中,轮播图是我们一定要学习的,所以为了更加高效的实现各种轮播图,封装了一个运动的 ...

  5. 自己封装的一个JS分享组件

    因为工作的需求之前也封装过一个JS分享插件,集成了我们公司常用的几个分享平台. 但是总感觉之前的结构上很不理想,样式,行为揉成一起,心里想的做的完美,实际上总是很多的偏差,所以这次我对其进行了改版. ...

  6. 自己封装的一个js方法用于获取显示的星期和日期时间

    自己封装的一个js方法用于获取显示的星期和日期时间 /** * 获取用于显示的星期和日期时间 * @param date * @returns {string} */ function getWeek ...

  7. 自己封装一个弹窗JS

    在我们平时的开发中,一定有很多地方需要用到弹窗提示功能.而系统自带的弹窗奇丑无比,而且我们不能自主控制.因此我们在开发过程中,自己封装一个弹窗JS方便我们使用. 代码demo如下: // JavaSc ...

  8. 一个基于 EasyUI 的前台架构(3)封装操作Tabs的JS代码

    一般来说,系统框架的主内容区会引入另一个独立的 Web 页面来实现系统的功能,所以在在 Tabs 里的每一个标签页里使用 iframe 标签来引入子页面.所以这里可以将 Tabs 的 Content ...

  9. 【原创】使用JS封装的一个小型游戏引擎及源码分享

    1 /** * @description: 引擎的设计与实现 * @user: xiugang * @time: 2018/10/01 */ /* * V1.0: 引擎实现的基本模块思路 * 1.创建 ...

随机推荐

  1. vue-compile概述

    来源 刘涛 Vue的核心可以分为三个大块:数据处理和双向绑定.模板编译.虚拟dom. 前面我们对第一部分的主要内容双向绑定做了一个分析讲解,接下来我们说一说模板编译. 这一部分的内容比较多,也比较复杂 ...

  2. ubuntu下的烧录工具

    Flash Image Tool1.0 为了ubuntu下能够方便地烧录版本,我开发了Flash Image Tool.现在服务器(192.167.100.225)上有一份它的拷贝share/Tool ...

  3. 【计算机视觉】人脸检测模型的评估方法-linux

    前言 人脸检测标准库FDDB详细介绍了数据库和使用方法.对于训练的模型,如何评估模型的效果呢,本文对此进行介绍.说实话,参考了很多博客,但是感觉都不是很明白(当然本文也会有瑕疵),故在此记录! 测试环 ...

  4. Unity3D-实现连续点击两次返回键退出游戏(安卓/IOS)

    Unity3D-连续点击两次返回键退出游戏 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 Count ...

  5. CF1092(div3):Great Vova Wall (栈)(还不错)

    D1. Great Vova Wall (Version 1): 题意:给定长度为N的墙,以及每个位置的一些高度,现在让你用1*2的砖和2*1的砖去铺,问最后能否铺到高度一样. 思路:分析其奇偶性,在 ...

  6. Codeforces 1096G. Lucky Tickets【生成函数】

    LINK 题目大意 很简单自己看 思路 考虑生成函数(为啥tags里面有一个dp啊) 显然,每一个指数上是否有系数是由数集中是否有这个数决定的 有的话就是1没有就是0 然后求出这个生成函数的\(\fr ...

  7. HDU 2647:Reward(拓扑排序+队列)

    Reward Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  8. 《DSP using MATLAB》Problem 3.9

    利用的频移性质为: 本习题代码: %% ------------------------------------------------------------------------ %% Outp ...

  9. poj 2449 Remmarguts' Date(K短路,A*算法)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/u013081425/article/details/26729375 http://poj.org/ ...

  10. SharedImageCollection

    https://documentation.devexpress.com/#WindowsForms/clsDevExpressUtilsSharedImageCollectiontopic The ...