묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
jsp파일안에 있는 자바코드를 따로 자바스크립트파일로 빼면 기능이 안먹어요
2016.10.16 18:29
지금하는내용이 스크롤하면 그옆에 따라 내려가는 플로팅메뉴입니다.
밑의 코드가 위에꺼는 웹화면에 나오는 div부분이구 아래꺼가 jsp안에서 쓰인 자바스크립트코드입니다 . 안에 길이를 너무많이 차지해서 따로 javascript source file로 이름은 floating.js로 만들어서 거기다 붙여넣기해서 jsp안에
이거썻는데도 기능이 안먹네요ㅠㅠ 왜그런걸까요?
<div class="article"> <div id="floatdiv" style="padding: 16px; border: 2px solid black; border-image: none; left: 1269px; top: 10px; width: 233px; height: 46px; position: absolute; z-index: 1; background-color: whitesmoke; layer-background-color: red;"> <span style="color: rosybrown;"> 플로팅메뉴 </span> </div> </div>
<script type="text/javascript"> var floatingMenuId = 'floatdiv'; var floatingMenu = { targetX: -250, targetY: 10, hasInner: typeof(window.innerWidth) == 'number', hasElement: document.documentElement && document.documentElement.clientWidth, menu: document.getElementById ? document.getElementById(floatingMenuId) : document.all ? document.all[floatingMenuId] : document.layers[floatingMenuId] }; floatingMenu.move = function () { if (document.layers) { floatingMenu.menu.left = floatingMenu.nextX; floatingMenu.menu.top = floatingMenu.nextY; } else { floatingMenu.menu.style.left = floatingMenu.nextX + 'px'; floatingMenu.menu.style.top = floatingMenu.nextY + 'px'; } } floatingMenu.computeShifts = function () { var de = document.documentElement; floatingMenu.shiftX = floatingMenu.hasInner ? pageXOffset : floatingMenu.hasElement ? de.scrollLeft : document.body.scrollLeft; if (floatingMenu.targetX < 0) { if (floatingMenu.hasElement && floatingMenu.hasInner) { // Handle Opera 8 problems floatingMenu.shiftX += de.clientWidth > window.innerWidth ? window.innerWidth : de.clientWidth } else { floatingMenu.shiftX += floatingMenu.hasElement ? de.clientWidth : floatingMenu.hasInner ? window.innerWidth : document.body.clientWidth; } } floatingMenu.shiftY = floatingMenu.hasInner ? pageYOffset : floatingMenu.hasElement ? de.scrollTop : document.body.scrollTop; if (floatingMenu.targetY < 0) { if (floatingMenu.hasElement && floatingMenu.hasInner) { // Handle Opera 8 problems floatingMenu.shiftY += de.clientHeight > window.innerHeight ? window.innerHeight : de.clientHeight } else { floatingMenu.shiftY += floatingMenu.hasElement ? document.documentElement.clientHeight : floatingMenu.hasInner ? window.innerHeight : document.body.clientHeight; } } } floatingMenu.doFloat = function() { var stepX, stepY; floatingMenu.computeShifts(); stepX = (floatingMenu.shiftX + floatingMenu.targetX - floatingMenu.nextX) * .07; if (Math.abs(stepX) < .5) { stepX = floatingMenu.shiftX + floatingMenu.targetX - floatingMenu.nextX; } stepY = (floatingMenu.shiftY + floatingMenu.targetY - floatingMenu.nextY) * .07; if (Math.abs(stepY) < .5) { stepY = floatingMenu.shiftY + floatingMenu.targetY - floatingMenu.nextY; } if (Math.abs(stepX) > 0 || Math.abs(stepY) > 0) { floatingMenu.nextX += stepX; floatingMenu.nextY += stepY; floatingMenu.move(); } setTimeout('floatingMenu.doFloat()', 20); }; // addEvent designed by Aaron Moore floatingMenu.addEvent = function(element, listener, handler) { if(typeof element[listener] != 'function' || typeof element[listener + '_num'] == 'undefined') { element[listener + '_num'] = 0; if (typeof element[listener] == 'function') { element[listener + 0] = element[listener]; element[listener + '_num']++; } element[listener] = function(e) { var r = true; e = (e) ? e : window.event; for(var i = element[listener + '_num'] -1; i >= 0; i--) { if(element[listener + i](e) == false) r = false; } return r; } } //if handler is not already stored, assign it for(var i = 0; i < element[listener + '_num']; i++) if(element[listener + i] == handler) return; element[listener + element[listener + '_num']] = handler; element[listener + '_num']++; }; floatingMenu.init = function() { floatingMenu.initSecondary(); floatingMenu.doFloat(); }; // Some browsers init scrollbars only after // full document load. floatingMenu.initSecondary = function() { floatingMenu.computeShifts(); floatingMenu.nextX = floatingMenu.shiftX + floatingMenu.targetX; floatingMenu.nextY = floatingMenu.shiftY + floatingMenu.targetY; floatingMenu.move(); } if (document.layers) floatingMenu.addEvent(window, 'onload', floatingMenu.init); else { floatingMenu.init(); floatingMenu.addEvent(window, 'onload', floatingMenu.initSecondary); } </script>