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. About RFC

    RFC说明 Request For Comments (RFC),是一系列以编号排定的文件,几乎所有的因特网标准都收录在RFC文件之中,如果你想成为网络方面的专家,那么RFC无疑是最重要也是最经常需要 ...

  2. Skynet服务器框架(十) CentOS 防火墙设置

    引言: 今天修改了 skynet 服务器的 IP 地址(即 config 文件中的 address 和 master 两项参数,IP 与当前及其的保持一致,端口号为 2017),然后使用一个简单的客户 ...

  3. 一起来点React Native——常用组件之Image

    一.前言 在开发中还有一个非常重要的组件Image,通过这个组件可以展示各种各样的图片,而且在React Native中该组件可以通过多种方式加载图片资源. 二.Image组件的基本用法 2.1 从当 ...

  4. iOS8 对开发者来说意味着什么?

    今天凌晨,Apple WWDC2014 iOS8 正式推出! 也许,对于广大iOS用户来说,iOS8的创新并不是特别多. 但对于开发者来说,影响却将会是无比巨大的! 正如Apple官网上的广告:Hug ...

  5. B+与B-树

    1 .B-树定义 B-树是一种平衡的多路查找树,它在文件系统中很有用. 定义:一棵m 阶的B-树,或者为空树,或为满足下列特性的m 叉树:⑴树中每个结点至多有m 棵子树:⑵若根结点不是叶子结点,则至少 ...

  6. HDU 1814 模板题 2-sat

    敲模板做的,不知道怎么就对了,注意一下建边即可··· 贴代码: #include<cstdio> #include<vector> using namespace std; # ...

  7. 【Quartz】Quartz将Job保存在数据库中所需表的说明

    QRTZ_CALENDARS 以 Blob 类型存储 Quartz 的 Calendar 信息 QRTZ_CRON_TRIGGERS 存储 Cron Trigger,包括 Cron表达式和时区信息  ...

  8. 在Docker中运行crontab

    在把自己的项目通过Docker进行打包时,由于项目中用到了crontab,不过使用到的基础镜像python:3.6-slim并没有安装这项服务,记录下在镜像中安装和配置crontab的过程. Dock ...

  9. 剑指offer-顺时针打印矩阵-二维数组

    输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1     2  3    4 5     6  7    8 9   10 11 12 13 14 15 16 ...

  10. 记录 ThinkPHP 5.* 漏洞修复后的情况

    记录 ThinkPHP 5.* 漏洞修复后的情况 ThinkPHP 官方 2018-12-09 下午收到漏洞报告. 2018-12-09 晚上看到 Git 已经更新了,修复了漏洞. 2018-12-1 ...