1 2(function(){ 3 var easing = 0.25; 4 var interval = 20; 5 var d = document; 6 var targetX = 0; 7 var targetY = 0; 8 var targetHash = ''; 9 var scrolling = false; 10 var splitHref = location.href.split('#'); 11 var currentHref_WOHash = splitHref[0]; 12 var incomingHash = splitHref[1]; 13 var prevX = null; 14 var prevY = null; 15 16 // ããã¥ã¡ã³ãèªã¿è¾¼ã¿å®äºæã«init()ãå®è¡ãã 17 addEvent(window, 'load', init); 18 19 // ããã¥ã¡ã³ãèªã¿è¾¼ã¿å®äºæã®å¦ç 20 function init(){ 21 // ãã¼ã¸å ãªã³ã¯ã«ã¤ãã³ããè¨å®ãã 22 setOnClickHandler(); 23 // å¤é¨ãããã¼ã¸å ãªã³ã¯ä»ãã§å¼ã³åºãããå ´å 24 if(incomingHash){ 25 if(window.attachEvent && !window.opera){ 26 // IEã®å ´åã¯ã¡ãã£ã¨å¾ ã£ã¦ããã¹ã¯ãã¼ã« 27 setTimeout(function(){scrollTo(0,0);setScroll('#'+incomingHash);},50); 28 }else{ 29 // IE以å¤ã¯ãã®ã¾ã¾GO 30 scrollTo(0, 0); 31 setScroll('#'+incomingHash); 32 } 33 } 34 } 35 36 // ã¤ãã³ãã追å ãã颿° 37 function addEvent(eventTarget, eventName, func){ 38 if(eventTarget.addEventListener){ 39 // ã¢ãã³ãã©ã¦ã¶ 40 eventTarget.addEventListener(eventName, func, false); 41 }else if(window.attachEvent){ 42 // IE 43 eventTarget.attachEvent('on'+eventName, function(){func.apply(eventTarget);}); 44 } 45 } 46 47 function setOnClickHandler(){ 48 var links = d.links; 49 for(var i=0; i<links.length; i++){ 50 // ãã¼ã¸å ãªã³ã¯ãªãã¹ã¯ãã¼ã«ããã 51 var link = links[i]; 52 var splitLinkHref = link.href.split('#'); 53 if(currentHref_WOHash == splitLinkHref[0] && d.getElementById(splitLinkHref[1])){ 54 addEvent(link, 'click', startScroll); 55 } 56 } 57 } 58 59 function startScroll(event){ 60 // ãªã³ã¯ã®ããã©ã«ãåä½ã殺ã 61 if(event){ // ã¢ãã³ãã©ã¦ã¶ 62 event.preventDefault(); 63 //alert('modern'); 64 }else if(window.event){ // IE 65 window.event.returnValue = false; 66 //alert('ie'); 67 } 68 // thisã¯å¼ã³åºãå ã«ãªã£ã¦ã 69 setScroll(this.hash); 70 } 71 72 function setScroll(hash){ 73 // ããã·ã¥ããã¿ã¼ã²ããè¦ç´ ã®åº§æ¨ãã²ãããã 74 var targetEle = d.getElementById(hash.substr(1)); 75 if(!targetEle)return; 76 //alert(scrollSize.height); 77 // ã¹ã¯ãã¼ã«å 座æ¨ãã»ãããã 78 var ele = targetEle; 79 var x = 0; 80 var y = 0; 81 while(ele){ 82 x += ele.offsetLeft; 83 y += ele.offsetTop; 84 ele = ele.offsetParent; 85 } 86 var maxScroll = getScrollMaxXY(); 87 targetX = Math.min(x, maxScroll.x); 88 targetY = Math.min(y, maxScroll.y); 89 targetHash = hash; 90 // ã¹ã¯ãã¼ã«åæ¢ä¸ãªãã¹ã¯ãã¼ã«éå§ 91 if(!scrolling){ 92 scrolling = true; 93 scroll(); 94 } 95 } 96 97 function scroll(){ 98 var currentX = d.documentElement.scrollLeft||d.body.scrollLeft; 99 var currentY = d.documentElement.scrollTop||d.body.scrollTop; 100 var vx = (targetX - currentX) * easing; 101 var vy = (targetY - currentY) * easing; 102 var nextX = currentX + vx; 103 var nextY = currentY + vy; 104 if((Math.abs(vx) < 1 && Math.abs(vy) < 1) 105 || (prevX === currentX && prevY === currentY)){ 106 // ç®æ¨åº§æ¨ä»è¿ã«å°éãã¦ãããçµäº 107 scrollTo(targetX, targetY); 108 scrolling = false; 109 location.hash = targetHash; 110 prevX = prevY = null; 111 return; 112 }else{ 113 // ç¹°ãè¿ã 114 scrollTo(parseInt(nextX), parseInt(nextY)); 115 prevX = currentX; 116 prevY = currentY; 117 setTimeout(function(){scroll()},interval); 118 } 119 } 120 121 function getDocumentSize(){ 122 return {width:Math.max(document.body.scrollWidth, document.documentElement.scrollWidth), height:Math.max(document.body.scrollHeight, document.documentElement.scrollHeight)}; 123 } 124 125 function getWindowSize(){ 126 var result = {}; 127 if(window.innerWidth){ 128 var box = d.createElement('div'); 129 with(box.style){ 130 position = 'absolute'; 131 top = '0px'; 132 left = '0px'; 133 width = '100%'; 134 height = '100%'; 135 margin = '0px'; 136 padding = '0px'; 137 border = 'none'; 138 visibility = 'hidden'; 139 } 140 d.body.appendChild(box); 141 var width = box.offsetWidth; 142 var height = box.offsetHeight; 143 d.body.removeChild(box); 144 result = {width:width, height:height}; 145 }else{ 146 result = {width:d.documentElement.clientWidth || d.body.clientWidth, height:d.documentElement.clientHeight || d.body.clientHeight}; 147 } 148 return result; 149 } 150 151 function getScrollMaxXY() { 152 if(window.scrollMaxX && window.scrollMaxY){ 153 return {x:window.scrollMaxX, y:window.scrollMaxY}; 154 } 155 var documentSize = getDocumentSize(); 156 var windowSize = getWindowSize(); 157 return {x:documentSize.width - windowSize.width, y:documentSize.height - windowSize.height}; 158 } 159 160 }());
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.