//#region 浏览器兼容使用 /* 设置兼容性的写法 ie里面有innerText,outerHTML,而HTML5没有这些属性,为了使得TML5兼容ie特性,写了如下兼容js,HTML5也在逐步形成上诉函数。 */ Namespace.register("U.MB") //通过修改浏览器内置属性 设置兼容,添加兼容,此兼容模块兼容ie6以上,firefox,safiry,chrome U.MB.init = function () { //如果是html5浏览器,则执行判断内的内容,ie则不用进入下面内容。 if (window.HTMLElement) { HTMLElement.prototype.__defineGetter__("onmousewheel", function () { return this.onwheel; }); HTMLElement.prototype.__defineSetter__("onmousewheel", function (UCB) { this.onwheel = UCB; }); if (!("onmousewheel" in HTMLElement)) { if ("onwheel" in HTMLElement.prototype) { U.M.HEPropert(HTMLElement.prototype, "onmousewheel", function () { return this.onwheel; }, function (UCB) { this.onwheel = UCB; }); } else { //firefox支持onmousewheel if (browser.firefox) { (function () { window.addEventListener("DOMMouseScroll", function (UE) { //监控Scroll事件 var _UOE = null , _UDOD = UE.srcElement; do { _UOE = $(_UDOD).attr("onmousewheel") || _UDOD.onmousewheel; _UDOD = $(_UDOD).Parent(); } while (!(_UOE || !_UDOD)); //冒泡的顶部获取 if (_UOE) { (typeof _UOE == "string") && (_UDOD.onmousewheel = new Function(_UOE)); U.M.StopDefault(); //阻止页面固定事件 setTimeout(function () { _UOE.call(this, UE); } , 0); //异步执行 解决锁定的bug } } , false); } )(); } } } if (!("innerText" in HTMLElement.prototype)) {/*检测浏览器是否支持innerText这个方法*/ U.M.HEPropert(HTMLElement.prototype, "innerText", function () { return this.textContent; }, function (UDE) { this.textContent = UDE; } ); } if (!("outerHTML" in HTMLElement.prototype)) {/*检测浏览器是否支持outerHTML这个方法*/ U.M.HEPropert(HTMLElement.prototype, "outerHTML", function () { var _UDOD = this.cloneNode(true), _UDTD = $$("div", {}); _UDTD.appendChild(_UDOD); return _UDTD.innerHTML; /*如果不支持就使用innerhtml插入*/ }, function (UTH) { var i, _UDOD = $(this), _UDPD = _UDOD.Parent(), _UDCD = $$("div", { "innerHTML": UTH }).childNodes, _UDTD = document.createDocumentFragment; for (i = 0; i < _UDCD.length; i++) { _UDTD.appendChild(_UDCD[i]); } ; _UDTD.insertBefore(_UDTD, this); _UDOD.remove(); } ); } if (!("outerText" in HTMLElement.prototype)) {/*检测浏览器是否支持outerText这个方法*/ U.M.HEPropert(HTMLElement.prototype, "outerText", function () { var _UDOD = this.cloneNode(true) , _UDTD = $$("div", {}); _UDTD.appendChld(_UDOD); return _UDTD.innerText; /*如果不支持就使用innerText插入*/ }, function (UTH) { var i, _UDOD = $(this), _UDPD = _UDOD.Parent(), _UDCD = $$("div", { "innerText": UTH }).childNodes, _UDTD = document.createDocumentFragment; for (i = 0; i < _UDCD.length; i++) { _UDTD.appendChild(_UDCD[i]); } _UDTD.insertBefore(_UDTD, this); _UDOD.remove(); }); } if (!("componentFromPoint" in HTMLElement.prototype)) { U.M.HEPropert(HTMLElement.prototype, "componentFromPoint", function () { return function () { var _UE = U.M.GetMousep(); var _UDE = U.M.GetElementAllInfo(this); if ((_UE["X"] > _UDE["CW"] + _UDE["TX"]) || (_UE["Y"] > _UDE["CH"] + _UDE["TY"])) { return "outside"; } return ""; } }, function () { }); } if (!("currentStyle" in HTMLElement.prototype)) { U.M.HEPropert(HTMLElement.prototype, "currentStyle", function () { return getComputedStyle(this, false); }, function () { }); } if (!("onreadystatechange" in HTMLElement.prototype)) { U.M.HEPropert(HTMLElement.prototype, "onreadystatechange", function () { return this.onload; }, function (UCB) { this.onload = UCB; }); } if (!("setCapture" in HTMLElement.prototype)) { U.M.HEPropert(HTMLElement.prototype, "setCapture", function () { return function () { window.captureEvents(Event.MOUSEMOVE); } }, function () { }); } if (!("releaseCapture" in HTMLElement.prototype)) { U.M.HEPropert(HTMLElement.prototype, "releaseCapture", function () { return function () { window.releaseEvents(Event.MOUSEMOVE); } }, function () { }); } if (!("onresize" in HTMLElement.prototype) || !browser.msie) { U.MB.onresize = function (UDOD, UDTD, UCB) { //Size事件设置 if (UCB) { UDOD.contentDocument.defaultView.onresize = function () { U.M.apply(UDTD, [[UCB]])(); } // } else { try { delete this.__SizeElement__; } catch (e) { } } } U.M.HEPropert(HTMLElement.prototype, "onresize", function () { try { this.__SizeElement__.contentDocument.defaultView.onresize; } catch (e) { return null; } }, function (UCB) { if (this.tagName) { //设置Set事件 var _UDOD = this.__SizeElement__; (U.M.GetStyle(this, "position") == "static") && (this.style.position = "relative"); if (!_UDOD || $(_UDOD).Parent() != this && UCB) { _UDOD = this.__SizeElement__ = $$("object", { "onload": [[U.MB.onresize, ["this", this, UCB]]], "type": "text/html", "data": "about:blank", "style": { "cssText": "display:block;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1;visibility:hidden;margin:0;padding:0;" } }, this)[0]; } else { U.MB.onresize(_UDOD, this, UCB); } } }); } if (!("componentFromPoint" in HTMLElement.prototype)) { U.M.HEPropert(HTMLElement.prototype, "componentFromPoint", function () { return function () { var _UE = U.M.GetMousep(); var _UDE = U.M.GetElementAllInfo(this); if ((_UE["X"] > _UDE["CW"] + _UDE["TX"]) || (_UE["Y"] > _UDE["CH"] + _UDE["TY"])) { return "outside"; } return ""; } }, function () { }); } if (!("event" in window.constructor.prototype)) {/*检测浏览器是否支持鼠标键盘事件*/ U.M.HEPropert(window.constructor.prototype, "event", function () { var _UDE = arguments.callee; while (_UDE.caller) { _UDE = _UDE.caller; } return _UDE.arguments ? _UDE.arguments[0] : null; }, function () { }); } if (window.Event.prototype) { if (!("srcElement" in window.Event.prototype)) { U.M.HEPropert(window.Event.prototype, "srcElement", function () { return event.target; }, function () { }); } if (!("keyCode" in window.Event.prototype)) { U.M.HEPropert(window.Event.prototype, "keyCode", function () { return event.which; }, function () { }); } } } } U.M.QSEM; //防止选择器创建多个样式style /** * querySelectorAll 兼容 * * @param {string} 搜索的内容 * @param {element} 搜索的元素区域 */ document.querySelectorAll = document.querySelectorAll || function (USE, UOE) { var _UDTD = U.M.QSEM, //判断是否已经添加了上style识别样式 _UDE = [], _UDOD = document.documentElement.firstChild, _UAE = (UOE || document).all, //搜索区域 i = _UAE.length; try { //添加的style link _UDTD.styleSheet.cssText = USE + "{q:1}"; } catch (e) { _UDTD = (U.M.QSEM = $$("style", { "type": "text/css", "styleSheet": { "cssText": USE + "{q:1}" } }, _UDOD)); } //全局筛选 while (i--) { (_UAE[i].currentStyle.q) && (_UDE.unshift(_UAE[i])); } return _UDE; }; /** * querySelector 兼容 * * @param {number} 搜索的内容 */ document.querySelector = document.querySelector || function (USE) { var _UDE = document.querySelectorAll(USE); return _UDE.length ? _UDE[0] : null; }; /** * 选择元素区域 自定义搜索元素选择函数 * * @param {number} 搜索的内容 */ window.SelectorElement = function (USE, UD) { var _UTF = (UD.id === "" && UD != document), _UTP = $$("div").querySelectorAll; //判断是否支持选择器 if (_UTF) { UD.id = UD.uniqueID; } try { //选择器获取 return (_UTP ? (UD || document) : document).querySelectorAll((UD.id ? ("#" + UD.id + " ") : " ") + USE, UD); } catch (e) { return null; } finally { (_UTF) && (UD.id = ""); } } //#region 手机兼容处理,只要引用了uform框架,会自动使手机在滑动的过程中不会触发点击事件 //Touch事件执行 if ("ontouchstart" in document) { (U.M.OTS) && (U.M.ReEvent("touchstart", document, U.M.OTS, true)); //touchstart U.M.AddEvent("touchstart", document, U.M.OTS = function () { var i, _UDOD = event.srcElement; U.M.UTX = null; U.M.StopBubble(); U.M.ReEvent("touchstart", document, U.M.OTS, true); //移除start事件 U.M.TouchE(_UDOD, "touchstart"); U.M.AddEvent("touchstart", document, U.M.OTS, true); //添加事件取消冒泡 U.M.AddEvent("touchmove", document, U.M.OTSM); //添加move事件监听 U.M.AddEvent("touchend", document, U.M.OTSE, true); //end事件等待 }, true); U.M.OTSM = function () { //移动监视 U.M.UTX = true; U.M.ReEvent("touchmove", document, U.M.OTSM); U.M.TouchE(event.srcElement, "touchmove"); U.M.StopBubble(); } //执行toucastart U.M.OTSE = function (UDOD) { U.M.ReEvent("touchend", document, U.M.OTSE, true); U.M.StopBubble(); //移除事件 if (!U.M.UTX) { U.M.TouchE(event.srcElement, "touchend"); } //事件执行 } } //#endregion