//获取浏览器可视区宽度
function getWidth() {
if (window.innerWidth){
return window.innerWidth;
}
else{
if (document.compatMode == "CSS1Compat"){
return document.documentElement.clientWidth;
}
else{
return document.body.clientWidth;
}
}
}
// 简写
// function getWidth(){
// return window.innerWidth || document.compatMode == "CSS1Compat" ? document.documentElement.clientWidth : document.body.clientWidth;
// } //获取浏览器可视区高度
function getHeight() {
if (window.innerHeight){
return window.innerHeight;
}
else{
if (document.compatMode == "CSS1Compat"){
return document.documentElement.clientHeight;
}
else{
return document.body.clientHeight;
}
}
}
// 简写
// function getHeight(){
// return window.innerHeight || document.compatMode == "CSS1Compat" ? document.documentElement.clientHeight : document.body.clientHeight;
// } //获取浏览器卷曲高度
function getscrollTop() {
if (document.documentElement.scrollTop){
return document.documentElement.scrollTop;
}
else{
return document.body.scrollTop;
}
}
// 简写
// function getscrollTop() {
// return document.documentElement.scrollTop || document.body.scrollTop;
// }
// function getscrollTop() {
// return document.documentElement.scrollTop + document.body.scrollTop;
// } function $(id){
return document.getElementById(id);
} // 由于getElementsByClassName()方法有兼容性问题 (IE8以下不兼容)
// 所以利用getElementsByTagName()方法封装一个函数模拟ByClassName函数功能
// 参数: class类名
// 返回值:匹配到的所有元素节点
function getClassName(cName){
var all = document.getElementsByTagName("*");
var arrays = new Array();
for(var i = 0; i < all.length; i++){
if (all[i].className == cName){
arrays.push(all[i])
}
}
return arrays;
} // 获取元素非行间样式的值
// 参数1:元素节点
// 参数2:属性名
function getStyle(element, attrName){
if (element.currentStyle) {
return element.currentStyle[attrName];
}
else{
return window.getComputedStyle(element, null)[attrName];
}
} // 返回元素的子节点(过滤掉空白文本 以及 注释节点后的)
// 参数:元素节点
// 返回值: 元素节点的子集节点
function getChildNodes(element){
var eList = element.childNodes;
var arrays = new Array();
for (var i = 0; i < eList.length; i++) {
if (eList[i].nodeType == 1) { //元素节点:1 属性节点:2 文本节点:3 注释节点:8
arrays.push(eList[i])
}
}
return arrays;
} // 返回元素的第一个子节点 (过滤掉空白文本 以及 注释节点后的)
// 参数:元素节点
// 返回值: 元素节点的第一个子元素节点
function getFirstChild(element){
var eList = element.childNodes;
var firstChild = null;
for (var i = 0; i < eList.length; i++) {
if (eList[i].nodeType == 1) {
firstChild = eList[i];
break;
}
}
return firstChild;
} // 返回元素的最后一个子节点 (过滤掉空白文本 以及 注释节点后的)
// 参数:元素节点
// 返回值: 元素节点的最后一个子元素节点
function getLastChild(element){
var eList = element.childNodes;
var lastChild = null;
for (var i = eList.length - 1; i >= 0; i--) {
if (eList[i].nodeType == 1) {
lastChild = eList[i];
break;
}
}
return lastChild;
} // 返回元素的上一个同级节点
// 参数: 元素节点
// 返回值: 元素的上一个同级节点
function getPreviousSibling(element){
var obj = element.previousSibling;
while (obj != null && obj.nodeType != 1){ //循环会在指定条件为真时循环执行代码块。
obj = obj.previousSibling;
}
return obj;
} // 返回元素的下一个同级节点
// 参数: 元素节点
// 返回值: 元素的下一个同级节点
function getNextSibling(element){
var obj = element.nextSibling;
while (obj != null && obj.nodeType != 1){ //循环会在指定条件为真时循环执行代码块。
obj = obj.nextSibling;
}
return obj;
} // 原理:由于e.pageY和pageX这个属性在IE低版本中不支持(8及以下),所以利用可视区鼠标的位置加上滚动条卷曲高度来获取基于内容区的鼠标的位置
// 作用:获取鼠标相对内容区的鼠标Y轴位置
// 参数:相对可视区的鼠标位置 (e.pageY)
// 返回值:相对内容区的鼠标位置
function getPageY(y){
return y + document.documentElement.scrollTop + document.body.scrollTop;
} // 封装dom 2级事件,添加卸载的函数
// 参数:
// 1:操作的元素
// 2:事件类型 (去掉on后)
// 3:执行的非匿名函数
// 4:捕获/冒泡(true/false)
// 添加事件
function addEvent(element, type, fn, method){
if (element.addEventListener){
element.addEventListener(type, fn, method)
}
else{ //IE浏览器 8 级以下
element.attachEvent("on" + type, fn);
}
}
// 卸载事件
function delEvent(element, type, fn, method){
if (removeEventListener) {
element.removeEventListener(type, fn, method);
}
else{
element.detachEvent("on" + type, fn)
}
} // e.target 获取拥有该事件对象的本身,等同于this 非IE浏览器使用
// e.srcElement 获取拥有该事件对象的本身,等同于this IE浏览器使用
// e.type 获取该事件类型 // 作用: 阻止事件默认行为
// 参数:事件源对象
function myPreventDefault(eobj){
if (eobj.preventDefault){
eobj.preventDefault(); //IE8以上,及火狐谷歌等
}
else{
eobj.returnValue = false; //ie8及以下
}
} // 作用: 阻止事件冒泡
// 参数: 事件源对象
function myStopPropagation(eobj) {
if (eobj.stopPropagation){
eobj.stopPropagation(); //非IE 下阻止事件冒泡的方法
}
else{
eobj.cancleBubble = true; //IE8及以下浏览器阻止事件冒泡
}
} // 作用: 判断鼠标左右键
function getMouseDirection(e){
e = e || event;
//e.button === 0 IE高版本(9以上)火狐谷歌
//e.button === 1 IE低版本 8及以下
if (e.button === 0 || e.button === 1){
return "左键";
}
if(e.button === 2){
return "右键";
}
} // 封装cookie
// 设置cookie
// 参数: 1:键名 2:键值 3.过期时间(可传可不传)
function setCookie(key, value, dateTime){
var cValue = key + "=" + encodeURIComponent(value); //编码(防止中文)
if (dateTime){
cValue += ";expires=" + dateTime;
}
document.cookie = cValue;
}
// 获取cookie
function getCookie(key){
var arr = document.cookie.split("; ");
var keyValue = "";
for (var i = 0; i < arr.length; i++){
var keyName = arr[i].split("=")[0];
if (keyName === key){
keyValue = arr[i].split("=")[1];
break;
}
}
return decodeURIComponent(keyValue); //解码 (防治中文)
}
//删除cookie
function delCookie(key){
document.cookie = key+"=expires=" + new Date(0);
}

未完,待续...

JS 兼容大全的更多相关文章

  1. JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记2

    技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuer ...

  2. js 事件大全

    Js事件大全一般事件 事件 浏览器支持 描述onClick IE3|N2|O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击onDblClick IE4|N4|O 鼠标双击事件onMouseDo ...

  3. JS正则表达式大全

    转自:http://wenku.baidu.com/link?url=3y930kC7F6D3wQdMjQ3fVDmiA9Wfebs_QK0UB3N3mFaEoKg4ytZORPopxufeYA6si ...

  4. 实用js代码大全

    实用js代码大全 //过滤数字 <input type=text onkeypress="return event.keyCode>=48&&event.keyC ...

  5. io.js - 兼容 NPM 平台的 Node.js 新分支

    io.js(JavaScript I/O)是兼容 NPM 平台的 Node.js 新分支,由 Node.js 的核心开发者在 Node.js 的基础上,引入更多的 ES6 特性,它的目的是提供更快的和 ...

  6. JS正则表达式大全(整理详细且实用)

    JS正则表达式大全(整理详细且实用).需要的朋友可以过来参考下,希望对大家有所帮助!! 正则表达式中的特殊字符 字符 含意 \ 做为转意,即通常在"\"后面的字符不按原来意义解释, ...

  7. js代码大全

    超级实用且不花哨的js代码大全 事件源对象event.srcElement.tagNameevent.srcElement.type 捕获释放event.srcElement.setCapture() ...

  8. JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记3

    技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] JavaScript.jQuer ...

  9. JavaScript、jQuery、HTML5、Node.js实例大全-读书笔记1

    技术很多,例子很多,只好慢慢学,慢慢实践!!现在学的这本书是[JavaScript实战----JavaScript.jQuery.HTML5.Node.js实例大全] 第 3 章 用 JavaScri ...

随机推荐

  1. 关于HSQLDB访问已有数据库文件的操作说明

    关于HSQLDB数据库的创建,本文不做过多描述,可以在百度上搜索一下,有许多. 对于访问已存在的库文件,网上找了半天,没有整理的很清楚的参考资料,现将自己的操作过程整理如下,以供参考. 1.先下载一个 ...

  2. 深入浅出图解【计算机网络】 之 【TCP可靠传输的实现2: 超时重传+拥塞控制】

    [前言]上一篇文章介绍了关于TCP的基础知识,以及建立(释放)连接和滑动窗口的概念. 本篇文章将延续上一篇的思路,继续介绍TCP实现可靠传输的机制. 超时重传 上一篇文章里介绍过TCP采用停止等待协议 ...

  3. xib Nib IB 可视化编程详解

    简单的说,Xib就是拖控件编程,也可以说是可视化编程. 相对于代码,使用IB和xib文件来组织UI,可以省下大量代码和时间,从而得到更快的开发速度. 如果你曾经受到过微软家Visual Basic或者 ...

  4. JavaSE——转换流和缓冲流

    转换流: 类 InputStreamReader(字符输入转换流): InputStream 即读取字节流,Reader 为读取字符流. InputStreamReader将字节流转换成字符流.便于一 ...

  5. CSDN博客大事日记1

    一.       2016-10-18,申请了博客专家,但是因为PV不够,所以很荣幸的成为了一名CSDN准博客专家,接下,得更加努力了争取早日成为博客专家,在此立帖为证哦.               ...

  6. OpenGL学习--03--矩阵

    Model--View--Projection 1.tutorial03.cpp // Include standard headers #include <stdio.h> #inclu ...

  7. mac系统使用介绍

    点击左上角苹果-->关于本机 Dock-->偏好设置 推荐按装mac系统:OS X V10.8(山狮) Finder-->应用程序(安装程序)<==>我的电脑 Safar ...

  8. 你写的什么垃圾代码让Vsync命令不能及时处理呢?(1)

    想想自己写的什么垃圾代码导致Vsync不能及时处理#(不高兴) 想不开? 实际开发中性能问题不好复现?这你就可能需要一些工具来帮你检测这种情况. 首先是Android系统自带的工具(4.1之后的版本) ...

  9. spring boot(17)-@Async异步

    验证码的异步机制 上一篇讲过可以用邮件发验证码,通常我们在某网站发验证码时,首先会提示验证码已发送,请检查邮箱或者短信,这就是图中的1和3.然而此时查看邮箱或短信可能并没有收到验证码,往往要过几秒种才 ...

  10. RHEL7: How to configure a rc-local service

    问题: linux7 /etc/rc.local 不生效: [root@bogon mysql3306]# uname -aLinux bogon 3.10.0-862.el7.x86_64 #1 S ...