title: 浏端兼容
date: 2018-06-09 16:29:00
updated: 2018-06-10 12:00:00
categories:
- 网页开发
- 开发应用
tags:
- nodejs
关于如何解决浏览器脚本兼容的一些技术/经验分享
现在直接通过browserlist/browerfy/babel等直接进行兼容就行了,不再一一设置兼容问题。
事件监听。
let EventCompact = {
//绑定
on: function(ele, fn, str) {
//火狐谷歌IE9+支持addEventListener
if(ele.addEventListener) {
ele.addEventListener(str, fn);
}
//IE678支持attachEvent
else if(ele.attachEvent) {
ele.attachEvent("on" + str, fn);
}
//在addEventListener和attachEvent都不存在的情况下,用此代码
else {
ele["on" + str] = fn;
}
},
//移除
off: function(ele, fn, str) {
if(ele.removeEventListener) {
ele.removeEventListener(str, fn);
} else if(ele.detachEvent) {
ele.detachEvent("on" + str, fn);
} else {
ele["on" + str] = null;
}
}
}
事件对象
function fixEvent(e) {
var evt = (typeof e == "undefined") ? window.event : e;
return evt;
}
来源元素
function srcElement(e) {
if (typeof e == "undefined") e = window.event;
var src = document.all ? e.srcElement : e.target;
return src;
}
鼠标坐标
function x(e) { //当前鼠标X坐标
return Browser.isIE ? event.x + document.documentElement.scrollLeft - 2 : e.pageX;
}
function y (e) { //当前鼠标Y坐标
return Browser.isIE ? event.y + document.documentElement.scrollTop - 2 : e.pageY;
}
缓存接口
//cookie get/set/remove
document.getCookie = function(sName) {
// cookies are separated by semicolons
var aCookie = document.cookie.split("; ");
for (var i = 0; i < aCookie.length; i++) {
// a name/value pair (a crumb) is separated by an equal sign
var aCrumb = aCookie[i].split("=");
if (sName == aCrumb[0])
return decodeURIComponent(aCrumb[1]);
}
// a cookie with the requested name does not exist
return null;
}
document.setCookie = function(sName, sValue, sExpires) {
var sCookie = sName + "=" + encodeURIComponent(sValue);
if (sExpires != null) {
sCookie += "; expires=" + sExpires;
}
document.cookie = sCookie;
}
document.removeCookie = function(sName, sValue) {
document.cookie = sName + "=; expires=Fri, 31 Dec 1999 23:59:59 GMT;";
}
网友评论