1 // Check scrolling the scroll bar from 2 function getScrollOffset () { . 3 IF (window.pageXOffset) { . 4 return { . 5 X: window.pageXOffset, . 6 Y: window.pageYOffset . 7 } . 8 } the else { . 9 return { 10 X : document.body.scrollLeft + document.documentElement.scrollLeft, . 11 Y: document.body.scrollTop + document.documentElement.scrollTop 12 is } 13 is } 14 } 15 16 //查看视口的尺寸 17 function getViewportOffset() { 18 if (window.innerWidth) { 19 return { 20 w: window.innerWidth, 21 h: window.innerHeight 22 } 23 } else { 24 if (document.compatMode === "BackCompat") { 25 return { 26 w: document.body.clientWidth, 27 h: document.body.clientHeight 28 } 29 } the else { 30 return { 31 is W: document.documentElement.clientWidth, 32 H: document.documentElement.clientHeight 33 is } 34 is } 35 } 36 } 37 [ 38 is // element coordinates relative to the document 39 function getElementPosition (DOM) { 40 var left = dom.offsetLeft; 41 is var Top = dom.offsetTop; 42 is the while (. 1 ) { 43 dom = dom.offsetParent; 44 if (dom) { 45 left += dom.offsetLeft; 46 top += dom.offsetTop; 47 } else { 48 break; 49 } 50 } 51 return { 52 left: left, 53 top: top 54 }; 55 } 56 57 58 //获取样式 59 function getStyle(elem, prop) { 60 if (window.getComputedStyle) { 61 return window.getComputedStyle(elem, null)[prop]; 62 } else { 63 return elem.currentStyle[prop]; 64 } 65 } 66 67 //兼容的 添加事件函数 68 function addEvent(elem, type, handle) { 69 if (elem.addEventListener) { 70 elem.addEventListener(type, handle, false); 71 } else if (elem.attachEvent) { 72 elem.attachEvent('on' + type, function() { 73 handle.call(elem); 74 }) 75 } else { 76 elem['on' + type] = handle; 77 } 78 } 79 80 // 取消冒泡 81 function stopBubble(event) { 82 if (event.stopPropagation) { 83 event.stopPropagation(); 84 } else { 85 event.stopBubble = true; 86 } 87 } 88 89 // stop the default event 90 function cancelHandler (Event) { 91 is IF (the event.preventDefault) { 92 the event.preventDefault (); 93 } the else { 94 event.returnValue = to false ; 95 } 96 } 97 98 / / cancel the event 99 function removeEvent (elem, of the type, myFunction) { 100 IF (elem.removeEventListener) { // all browsers except IE 8 and earlier versions of IE 101 elem.removeEventListener(type, myFunction); 102 } else if (elem.detachEvent) { 103 elem.detachEvent('on' + type, myFunction); 104 } 105 } 106 107 // 拖拽 108 function drap(elem) { 109 var disX, 110 disY; 111 addEvent(elem, 'mousedown', function(e) { 112 var event = e || window.event; 113 disX = event.pageX - parseInt(getStyle(elem, 'left')); 114 disY = event.pageY - parseInt(getStyle(elem, 'top')); 115 addEvent(document, 'mousemove', mouseMove); 116 addEvent(document, 'mouseup', mouseUp); 117 stopBubble(event); 118 cancelHandler(event); 119 }); 120 121 function mouseMove(e) { 122 var event = e || window.event; 123 elem.style.left = event.pageX - disX + 'px'; 124 elem.style.top = event.pageY - disY + 'px'; 125 } 126 127 function mouseUp(e) { 128 var event = e || window.event; 129 removeEvent(document, 'mousemove', mouseMove); 130 removeEvent(document, 'mouseup', mouseUp); 131 } 132 } 133 134 135 //仿 fixed 136 function positionFixed(elem) { 137 var elemTop = elem.offsetTop; 138 window.onscroll = function() { 139 div.style.top = window.pageYOffset + elemTop + 'px'; 140 } 141 } 142 143 // asynchronously loaded, create a script tag, is inserted into the DOM, loaded after the callback 144 function The loadScript (URL, the callback) { 145 var script = document.createElement ( 'script' ); 146 script.type = 'text / JavaScript' ; 147 IF (script.readyState) { 148 script.onreadystatechange = function () { // IEs 149 IF (script.readyState == 'Complete' || script.readyState == 'loaded' ) { 150 the callback (); 151 } 152 } 153 } the else { 154 script.onload = function () { // non IEs 155 the callback (); 156 } 157 } 158 script.src = URL; 159 document.head.appendChild (Script); 160. } 161 // call 162 // The loadScript ( 'demo.js', function () {test ();}); 163 // the callback not directly write test, because the calling code when executed, js file has not been loaded, the system is unable to recognize what test an error is reported, 164 // so we need to immediately execute a function, then call again when you need to call;