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. 漂亮的各种弹出框 sweet alert

    Sweet Alert 是一个替代传统的 Alert 的提示效果.SweetAlert 自动居中对齐在页面中央,不管您使用的是台式电脑,手机或平板电脑看起来效果都很棒. 还带下拉 几种 动画效果 弹窗 ...

  2. \n,\r,\t

    etF首先说说\n,\r,\t \n 软回车: 在Windows 中表示换行且回到下一行的最开始位置 在Linux.unix 中只表示换行,但不会回到下一行的开始位置. \r 软空格: 在Linux. ...

  3. iOS 开发 Framework

    制作Framework 的好处和缺点 好处:       1.如果模块间接口定义的比较完善,模块化的程序具有很好的可扩展性与内聚性:       2.物理上的模块化便于开发过程的管理与测试,尤其是在程 ...

  4. rar ubuntu

    http://jingyan.baidu.com/article/1612d5004095eee20e1eeeab.html sudo 7z x ***.rar

  5. LMS算法

    一.感知器算法和LMS算法 感知器和自适应线性元件在历史上几乎是同时提出的,并且两者在对权值的调整的算法非常相似.它们都是基于纠错学习规则的学习算法. 感知器算法存在如下问题:不能推广到一般的前向网络 ...

  6. 如何在Struts2的拦截器中调用Spring容器

    第一种: 通常用ApplicationContext来调用Spring配置文件中的一些Bean,所以首先创建Spring上下文容器. ApplicationContext ac = (Applicat ...

  7. 【NOI2003】银河英雄传

    迭代不一定比递归好 原题: 公元五八○一年,地球居民迁移至金牛座α第二行星,在那里发表银河联邦创立宣言,同年改元为宇宙历元年,并开始向银河系深处拓展. 宇宙历七九九年,银河系的两大军事集团在巴米利恩星 ...

  8. android BSP移植综述

    将android移植到特定硬件平台上,其核心是bsp的搭建工作,bsp是板级支持包,并不是特定某个文件,而是从功能上理解的一种硬件适配软件包,它的核心就是: 1. linux内核硬件相关部分(主要是l ...

  9. streamsets 3.5 的一些新功能

    streamsets 3.5 有了一些新的特性以及增强,总之是越来越方便了,详细的可以 查看官方说明,以下简单例举一些比较有意义的. origins 新的pulsar 消费origin jdbc 多表 ...

  10. stenciljs 学习九 使用jsx

    可以使用jsx 方便组件的开发 基本格式 主要是render 函数 class MyComponent { render() { return ( <div> <h1>Hell ...