Pastebin is 300% more awesome when you are logged in. Sign Up, it's FREE!
Guest

Firefox Scroll Freeze

By: a guest on Oct 30th, 2012  |  syntax: HTML 5  |  size: 1.44 KB  |  hits: 60  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4.         <title> FireFox Scroll Issue </title>
  5. </head>
  6. <body>
  7.         <div id="select_div" style="display: none;">
  8.                 <select>
  9.                         <option value="1">1</option>
  10.                 </select>
  11.         </div>
  12.  
  13.         <script>
  14.                 for ( var i = 0; i < 300; i++ ) document.write( '<p>' + i + '</p>' );
  15.  
  16.                 function Scroller()
  17.                 {
  18.                         var self                        = this;
  19.                         this.si                         = null;
  20.                         this.old_scroll_pos     = null;
  21.                         this.select_visible     = false;
  22.  
  23.                         this.select_div         = document.getElementById( 'select_div' );
  24.  
  25.                         window.onscroll         = function(){ self.SetScrolling(); }
  26.                 }
  27.  
  28.                 Scroller.prototype.SetScrolling = function()
  29.                 {
  30.                         var self = this;
  31.  
  32.                         this.scroll_pos = document.body && document.body.scrollTop || document.documentElement && document.documentElement.scrollTop || 0 ;
  33.  
  34.                         if ( !this.si ) this.si = setInterval( function(){ self.Poll_Scroll_Pos(); }, 10 );
  35.                 }
  36.  
  37.                 Scroller.prototype.Poll_Scroll_Pos = function()
  38.                 {
  39.                         if ( this.old_scroll_pos == this.scroll_pos )
  40.                         {
  41.                                 clearInterval( this.si );
  42.                                 this.si = null;
  43.                         }
  44.  
  45.                         this.old_scroll_pos = this.scroll_pos;
  46.  
  47.                         if ( this.scroll_pos > 300 && this.select_visible == false )
  48.                         {
  49.                                 this.select_div.style.display   = 'block';
  50.                                 this.select_visible                             = true;
  51.                         }
  52.  
  53.                         if ( this.scroll_pos == 0 && this.select_visible == true )
  54.                         {
  55.                                 this.select_div.style.display   = 'none';
  56.                                 this.select_visible                             = false;
  57.                         }
  58.                 }
  59.  
  60.                 var scroller = new Scroller();
  61.         </script>
  62. </body>
  63. </html>