跨浏览器常用的方法

来源:互联网 发布:汉王图文识别软件 编辑:程序博客网 时间:2024/06/06 08:40
//跨浏览器开发中的事件var EventUtil = {addHandler: function(element, type, handler) {if (element.addEventListener) {element.addEventListener(type, handler, false);} else if (element.attachEvent) {element.attachEvent("on" + type, handler);} else {element["on" + type] = handler;}},removeHandler: function(element, type, handler) {if (element.removeEventListener) {element.removeEventListener(type, handler, false);} else if (element.detachEvent) {element.detachEvent("on" + type, handler);} else {element["on" + type] = null;}},getEvent: function(event) {return event ? event : window.event;},getTarget: function(event) {return event.target || event.srcElement;},preventDefault: function(event) {if (event.preventDefault) {event.preventDefault();} else {event.returnValue = false;}},stopPropagation: function(event) {if (event.stopPropagation) {event.stopPropagation();} else {event.cancelBubble = true;}},//获取相关元素,只有mouseout和mouseover事件有getRelatedTarget: function(event) {if (event.relatedTarget) {return event.relatedTarget;} else if (event.toElement) {return event.toElement;} else if (event.fromElement) {return event.fromElement;} else {return null;}},//获取鼠标事件的点击键   0表示鼠标左键  1表示鼠标滚轮按钮 2表示鼠标右键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;}}},//获取鼠标滚轮增量值getWheelDelta: function(event) {if (event.wheelDelta) {return (client.engine.opera && client.engine.opera < 9.5 ?-event.wheelDelta : event.wheelDelta);} else {return -event.detail * 40;}},//获取键码   获取到键码之后通过使用String.fromCharCode()将键码转化为实际的字符getCharCode: function(event) {if (typeof event.charCode == "number") {return event.charCode;} else {return event.keyCode;}},//获取剪切板中的内容getClipboardText: function(event) {var clipboardData = (event.clipboardData || window.clipboardData);return clipboardData.getData("text");},//设置剪切板中的内容setClipboardText: function(event, value) {if (event.clipboardData) {return event.clipboardData.setData("text/plain", value);} else if (window.clipboardData) {return window.clipboardData.setData("text", value);}},};//浏览器是否支持hashchange事件 url参数列表发生变化时触发var isSupported = ("onhashchange" in window) && (document.documentMode === undefined || document.documentMode > 7);//获取页面坐标var div = document.getElementById("myDiv");EventUtil.addHandler(div, "click", function(event) {event = EventUtil.getEvent(event);var pageX = event.pageX,pageY = event.pageY;if (pageX === undefined) {pageX = event.clientX + (document.body.scrollLeft ||document.documentElement.scrollLeft);}if (pageY === undefined) {pageY = event.clientY + (document.body.scrollTop ||document.documentElement.scrollTop);}alert("Page coordinates: " + pageX + "," + pageY);});//表单项选择部分文本function selectText(textbox, startIndex, stopIndex) {if (textbox.setSelectionRange) {textbox.setSelectionRange(startIndex, stopIndex);} else if (textbox.createTextRange) {var range = textbox.createTextRange();range.collapse(true);range.moveStart("character", startIndex);range.moveEnd("character", stopIndex - startIndex);range.select();}textbox.focus();}//跨浏览器向javascript控制台中写入消息function log(message) {if (typeof console == "object") {console.log(message);} else if (typeof opera == "object") {opera.postError(message);} else if (typeof java == "object" && typeof java.lang == "object") {java.lang.System.out.println(message);}}//跨浏览器解析XMLfunction parseXml(xml) {var xmldom = null;if (typeof DOMParser != "undefined") {xmldom = (new DOMParser()).parseFromString(xml, "text/xml");var errors = xmldom.getElementsByTagName("parsererror");if (errors.length) {throw new Error("XML parsing error:" + errors[0].textContent);}} else if (typeof ActiveXObject != "undefined") {xmldom = createDocument();xmldom.loadXML(xml);if (xmldom.parseError != 0) {throw new Error("XML parsing error: " + xmldom.parseError.reason);}} else {throw new Error("No XML parser available.");}return xmldom;}//序列化XMLfunction serializeXml(xmldom) {if (typeof XMLSerializer != "undefined") {return (new XMLSerializer()).serializeToString(xmldom);} else if (typeof xmldom.xml != "undefined") {return xmldom.xml;} else {throw new Error("Could not serialize XML DOM.");}}//跨浏览器创建XMLHttpRequest对象function createXHR() {if (typeof XMLHttpRequest != "undefined") {return new XMLHttpRequest();} else if (typeof ActiveXObject != "undefined") {if (typeof arguments.callee.activeXString != "string") {var versions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0","MSXML2.XMLHttp"],i, len;for (i = 0, len = versions.length; i < len; i++) {try {new ActiveXObject(versions[i]);arguments.callee.activeXString = versions[i];break;} catch (ex) {//跳过}}}return new ActiveXObject(arguments.callee.activeXString);} else {throw new Error("No XHR object available.");}}//跨浏览器的跨域资源共享方案 --CORS/*abort():用于停止正在进行的请求。  onerror:用于替代 onreadystatechange 检测错误。 onload:用于替代 onreadystatechange 检测成功。 responseText:用于取得响应内容。 send():用于发送请求以上方法包含在方法返回值中*/function createCORSRequest(method, url) {var xhr = new XMLHttpRequest();if ("withCredentials" in xhr) {xhr.open(method, url, true);} else if (typeof XDomainRequest != "undefined") {//IE  XDominRequest对象xhr = new XDomainRequest();xhr.open(method, url);} else {xhr = null;}return xhr;}var request = createCORSRequest("get", "http://www.somewhere-else.com/page/");if (request) {request.onload = function() {//对 request.responseText 进行处理};request.send();}//cookie的读写删基本功能操作var CookieUtil = {get: function(name) {var cookieName = encodeURIComponent(name) + "=",cookieStart = document.cookie.indexOf(cookieName),cookieValue = null;if (cookieStart > -1) {var cookieEnd = document.cookie.indexOf(";", cookieStart);if (cookieEnd == -1) {cookieEnd = document.cookie.length;}cookieValue = decodeURIComponent(document.cookie.substring(cookieStart + cookieName.length, cookieEnd));}return cookieValue;},/*cookie 的名称,cookie 的值,可选的用于指定 cookie 何时应被删除的 Date 对象,cookie 的可选的 URL 路径,可选的域,以及可选的表示是否要添加 secure 标志的布尔值。*/set: function(name, value, expires, path, domain, secure) {var cookieText = encodeURIComponent(name) + "=" +encodeURIComponent(value);if (expires instanceof Date) {cookieText += "; expires=" + expires.toGMTString();}if (path) {cookieText += "; path=" + path;}if (domain) {cookieText += "; domain=" + domain;}if (secure) {cookieText += "; secure";}document.cookie = cookieText;},unset: function(name, path, domain, secure) {this.set(name, "", new Date(0), path, domain, secure);}};//兼容只支持 globalStorage 的浏览器function getLocalStorage() {if (typeof localStorage == "object") {return localStorage;} else if (typeof globalStorage == "object") {return globalStorage[location.host];} else {throw new Error("Local storage not available.");}}
原创粉丝点击