postmessage plugin is now part of reveal.js core
This commit is contained in:
		
							
								
								
									
										26
									
								
								js/reveal.js
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								js/reveal.js
									
									
									
									
									
								
							| @@ -239,7 +239,6 @@ var Reveal = (function(){ | |||||||
|  |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Loads the dependencies of reveal.js. Dependencies are |      * Loads the dependencies of reveal.js. Dependencies are | ||||||
|      * defined via the configuration option 'dependencies' |      * defined via the configuration option 'dependencies' | ||||||
| @@ -313,6 +312,9 @@ var Reveal = (function(){ | |||||||
| 		// Make sure we've got all the DOM elements we need | 		// Make sure we've got all the DOM elements we need | ||||||
| 		setupDOM(); | 		setupDOM(); | ||||||
|  |  | ||||||
|  | 		// Listen to messages posted to this window | ||||||
|  | 		setupPostMessage(); | ||||||
|  |  | ||||||
| 		// Resets all vertical slides so that only the first is visible | 		// Resets all vertical slides so that only the first is visible | ||||||
| 		resetVerticalSlides(); | 		resetVerticalSlides(); | ||||||
|  |  | ||||||
| @@ -551,6 +553,28 @@ var Reveal = (function(){ | |||||||
|  |  | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	/** | ||||||
|  | 	 * Registers a listener to postMessage events, this makes it | ||||||
|  | 	 * possible to call all reveal.js API methods from another | ||||||
|  | 	 * window. For example: | ||||||
|  | 	 * | ||||||
|  | 	 * revealWindow.postMessage( JSON.stringify({ | ||||||
|  | 	 *   method: 'slide', | ||||||
|  | 	 *   args: [ 2 ] | ||||||
|  | 	 * }), '*' ); | ||||||
|  | 	 */ | ||||||
|  | 	function setupPostMessage() { | ||||||
|  |  | ||||||
|  | 		window.addEventListener( 'message', function ( event ) { | ||||||
|  | 			var data = JSON.parse( event.data ); | ||||||
|  | 			var method = Reveal[data.method]; | ||||||
|  | 			if( typeof method === 'function' ) { | ||||||
|  | 				method.apply( Reveal, data.args ); | ||||||
|  | 			} | ||||||
|  | 		}, false); | ||||||
|  |  | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	/** | 	/** | ||||||
| 	 * Applies the configuration settings from the config | 	 * Applies the configuration settings from the config | ||||||
| 	 * object. May be called multiple times. | 	 * object. May be called multiple times. | ||||||
|   | |||||||
| @@ -1,39 +0,0 @@ | |||||||
| <html> |  | ||||||
| 	<body> |  | ||||||
|  |  | ||||||
| 		<iframe id="reveal" src="../../index.html" style="border: 0;" width="500" height="500"></iframe> |  | ||||||
|  |  | ||||||
| 		<div> |  | ||||||
| 			<input id="back" type="button" value="go back"/> |  | ||||||
| 			<input id="ahead" type="button" value="go ahead"/> |  | ||||||
| 			<input id="slideto" type="button" value="slideto 2-2"/> |  | ||||||
| 		</div> |  | ||||||
|  |  | ||||||
| 		<script> |  | ||||||
|  |  | ||||||
| 			(function (){ |  | ||||||
|  |  | ||||||
| 				var back = document.getElementById( 'back' ), |  | ||||||
| 						ahead = document.getElementById( 'ahead' ), |  | ||||||
| 						slideto = document.getElementById( 'slideto' ), |  | ||||||
| 						reveal =  window.frames[0]; |  | ||||||
|  |  | ||||||
| 					back.addEventListener( 'click', function () { |  | ||||||
| 						 |  | ||||||
| 					reveal.postMessage( JSON.stringify({method: 'prev', args: []}), '*' ); |  | ||||||
| 				}, false ); |  | ||||||
|  |  | ||||||
| 				ahead.addEventListener( 'click', function (){ |  | ||||||
| 					reveal.postMessage( JSON.stringify({method: 'next', args: []}), '*' ); |  | ||||||
| 				}, false ); |  | ||||||
|  |  | ||||||
| 				slideto.addEventListener( 'click', function (){ |  | ||||||
| 					reveal.postMessage( JSON.stringify({method: 'slide', args: [2,2]}), '*' ); |  | ||||||
| 				}, false ); |  | ||||||
|  |  | ||||||
| 			}()); |  | ||||||
|  |  | ||||||
| 		</script> |  | ||||||
|  |  | ||||||
| 	</body> |  | ||||||
| </html> |  | ||||||
| @@ -1,42 +0,0 @@ | |||||||
| /* |  | ||||||
|  |  | ||||||
| 	simple postmessage plugin |  | ||||||
|  |  | ||||||
| 	Useful when a reveal slideshow is inside an iframe. |  | ||||||
| 	It allows to call reveal methods from outside. |  | ||||||
|  |  | ||||||
| 	Example: |  | ||||||
| 		 var reveal =  window.frames[0]; |  | ||||||
|  |  | ||||||
| 		 // Reveal.prev();  |  | ||||||
| 		 reveal.postMessage(JSON.stringify({method: 'prev', args: []}), '*'); |  | ||||||
| 		 // Reveal.next();  |  | ||||||
| 		 reveal.postMessage(JSON.stringify({method: 'next', args: []}), '*'); |  | ||||||
| 		 // Reveal.slide(2, 2);  |  | ||||||
| 		 reveal.postMessage(JSON.stringify({method: 'slide', args: [2,2]}), '*'); |  | ||||||
|  |  | ||||||
| 	Add to the slideshow: |  | ||||||
|  |  | ||||||
| 		dependencies: [ |  | ||||||
| 			... |  | ||||||
| 			{ src: 'plugin/postmessage/postmessage.js', async: true, condition: function() { return !!document.body.classList; } } |  | ||||||
| 		] |  | ||||||
|  |  | ||||||
| */ |  | ||||||
|  |  | ||||||
| (function (){ |  | ||||||
|  |  | ||||||
| 	window.addEventListener( "message", function ( event ) { |  | ||||||
| 		var data = JSON.parse( event.data ), |  | ||||||
| 				method = data.method, |  | ||||||
| 				args = data.args; |  | ||||||
|  |  | ||||||
| 		if( typeof Reveal[method] === 'function' ) { |  | ||||||
| 			Reveal[method].apply( Reveal, data.args ); |  | ||||||
| 		} |  | ||||||
| 	}, false); |  | ||||||
|  |  | ||||||
| }()); |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
		Reference in New Issue
	
	Block a user