generalize scroll offset prevention
This commit is contained in:
		
							
								
								
									
										30
									
								
								js/reveal.js
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								js/reveal.js
									
									
									
									
									
								
							@@ -410,8 +410,8 @@
 | 
			
		||||
		// Listen to messages posted to this window
 | 
			
		||||
		setupPostMessage();
 | 
			
		||||
 | 
			
		||||
		// Prevent iframes from scrolling the slides out of view
 | 
			
		||||
		setupIframeScrollPrevention();
 | 
			
		||||
		// Prevent the slides from being scrolled out of view
 | 
			
		||||
		setupScrollPrevention();
 | 
			
		||||
 | 
			
		||||
		// Resets all vertical slides so that only the first is visible
 | 
			
		||||
		resetVerticalSlides();
 | 
			
		||||
@@ -642,22 +642,22 @@
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * This is an unfortunate necessity. Iframes can trigger the
 | 
			
		||||
	 * parent window to scroll, for example by focusing an input.
 | 
			
		||||
	 * This is an unfortunate necessity. Some actions – such as
 | 
			
		||||
	 * an input field being focused in an iframe or using the
 | 
			
		||||
	 * keyboard to expand text selection beyond the bounds of
 | 
			
		||||
	 * a slide – can trigger our content to be pushed out of view.
 | 
			
		||||
	 * This scrolling can not be prevented by hiding overflow in
 | 
			
		||||
	 * CSS so we have to resort to repeatedly checking if the
 | 
			
		||||
	 * browser has decided to offset our slides :(
 | 
			
		||||
	 * CSS (we already do) so we have to resort to repeatedly
 | 
			
		||||
	 * checking if the slides have been offset :(
 | 
			
		||||
	 */
 | 
			
		||||
	function setupIframeScrollPrevention() {
 | 
			
		||||
	function setupScrollPrevention() {
 | 
			
		||||
 | 
			
		||||
		if( dom.slides.querySelector( 'iframe' ) ) {
 | 
			
		||||
			setInterval( function() {
 | 
			
		||||
				if( dom.wrapper.scrollTop !== 0 || dom.wrapper.scrollLeft !== 0 ) {
 | 
			
		||||
					dom.wrapper.scrollTop = 0;
 | 
			
		||||
					dom.wrapper.scrollLeft = 0;
 | 
			
		||||
				}
 | 
			
		||||
			}, 500 );
 | 
			
		||||
		}
 | 
			
		||||
		setInterval( function() {
 | 
			
		||||
			if( dom.wrapper.scrollTop !== 0 || dom.wrapper.scrollLeft !== 0 ) {
 | 
			
		||||
				dom.wrapper.scrollTop = 0;
 | 
			
		||||
				dom.wrapper.scrollLeft = 0;
 | 
			
		||||
			}
 | 
			
		||||
		}, 1000 );
 | 
			
		||||
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user