Mega Code Archive

 
Categories / JavaScript DHTML / Mochkit
 

Mouse Events with MochiKit

<!-- MochiKit is dual-licensed software.  It is available under the terms of the MIT License, or the Academic Free License version 2.1.  The full text of each license is included below. --> <!-- Code revised from MochiKit demo code --> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"         "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head>     <title>Mouse Events with MochiKit</title>     <style type="text/css"> h1 {     font-size: 2em;     color: #4B4545;     text-align: center; } div.scroll-box {     border  : 2px solid blue;     padding : 4ex 4em;     margin  : 4ex 4em; } div.padding {     padding : 4ex 4em;     margin  : 4ex 4em;     border  : 1px solid silver; }          </style>     <script type="text/javascript" src="MochiKit-1.4.2//lib/MochiKit/MochiKit.js"></script>     <script type="text/javascript"> /*     Mouse Events: Simple Mouse Scrolling Handlers */ function showMouseEvent(evt) {     getElement("show-mouse-event-repr").innerHTML = repr(evt);     evt.stop(); }; function stopPageFromScrolling( event ) {   var src = event.src();   var scrollTop = src.scrollTop;   //  While trying to stop scrolling events for IE, found that it   //  jumped around a bit.  The following fudgetFactor is NOT the way   //  to handle this but was the best I could do with the limited time   //  I had.   var fudgeFactor = /MSIE/.test(navigator.userAgent) ? 25 : 0;   // scrolling up   if (event.mouse().wheel.y < 0) {     // Following test should probably be "if (scrollTop == 0)" which     // works in FF but not IE.     if (scrollTop <= fudgeFactor) {       event.stop();     }   }   //..scrolling down   else {     // Following test should be "if (scrollTop == src.scrollHeight - src.clientHeight)",     // see comment above.     if (src.scrollHeight <= (scrollTop + src.clientHeight + fudgeFactor)) {       event.stop();     }   } }; function connectEvents(){   connect("show-mouse-event", "onmousemove", showMouseEvent);   connect("show-mouse-event", "onmousedown", showMouseEvent);   connect("show-mouse-event", "onmouseup", showMouseEvent);   connect("show-mouse-event", "onmousewheel", showMouseEvent);   connect("no-scroll-page", "onmousewheel", stopPageFromScrolling); }; connect(window, 'onload',     function() {           connectEvents();           var elems = getElementsByTagAndClassName("A", "view-source");           var page = "mouse_events/";           for (var i = 0; i < elems.length; i++) {             var elem = elems[i];             var href = elem.href.split(/\//).pop();             elem.target = "_blank";             elem.href = "../view-source/view-source.html#" + page + href;           }     });          </script> </head> <body>     <h1>         Mouse Events with MochiKit     </h1>     <p>         For a detailed description of what happens under the hood, check out         <a href="mouse_events.js" class="view-source">mouse_events.js</a>.     </p>     <p>         View Source: [             <a href="index.html" class="view-source">index.html</a> |             <a href="mouse_events.js" class="view-source">mouse_events.js</a> |             <a href="mouse_events.css" class="view-source">mouse_events.css</a>         ]     </p>     <div id="show-mouse-event" class="scroll-box">       Hover, Click, or Scroll In Me:<br/><br/>       <span id="show-mouse-event-repr"></span>     </div>     <div id="scroll-page" class="scroll-box" style="height: 100px; overflow: scroll;">       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />       Scroll Me and then the page scrolls! <br />     </div>     <div id="no-scroll-page" class="scroll-box" style="height: 100px; overflow: scroll;">       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />       Scroll Me and then the page does not scroll! <br />     </div>     <div class="padding">Ignore me I just make the page big enough to require scrollbars.</div>     <div class="padding">Ignore me I just make the page big enough to require scrollbars.</div>     <div class="padding">Ignore me I just make the page big enough to require scrollbars.</div>     <div class="padding">Ignore me I just make the page big enough to require scrollbars.</div>     <div class="padding">Ignore me I just make the page big enough to require scrollbars.</div>     <div class="padding">Ignore me I just make the page big enough to require scrollbars.</div>     <div class="padding">Ignore me I just make the page big enough to require scrollbars.</div>     <div class="padding">Ignore me I just make the page big enough to require scrollbars.</div>     <div class="padding">Ignore me I just make the page big enough to require scrollbars.</div> </body> </html>