bubble all reveal.js events to parent window through postMessage
This commit is contained in:
		
							
								
								
									
										18
									
								
								js/reveal.js
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								js/reveal.js
									
									
									
									
									
								
							| @@ -568,10 +568,11 @@ var Reveal = (function(){ | ||||
| 		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); | ||||
| 		}, false ); | ||||
|  | ||||
| 	} | ||||
|  | ||||
| @@ -957,13 +958,22 @@ var Reveal = (function(){ | ||||
| 	 * Dispatches an event of the specified type from the | ||||
| 	 * reveal DOM element. | ||||
| 	 */ | ||||
| 	function dispatchEvent( type, properties ) { | ||||
| 	function dispatchEvent( type, args ) { | ||||
|  | ||||
| 		var event = document.createEvent( "HTMLEvents", 1, 2 ); | ||||
| 		var event = document.createEvent( 'HTMLEvents', 1, 2 ); | ||||
| 		event.initEvent( type, true, true ); | ||||
| 		extend( event, properties ); | ||||
| 		extend( event, args ); | ||||
| 		dom.wrapper.dispatchEvent( event ); | ||||
|  | ||||
| 		// If we're in an iframe, post each reveal.js event to the | ||||
| 		// parent window. Used by the notes plugin | ||||
| 		if( window.parent !== window.self ) { | ||||
| 			// Remove arguments that can't be stringified (circular structures) | ||||
| 			if( args && args.currentSlide ) delete args.currentSlide; | ||||
| 			if( args && args.previousSlide ) delete args.previousSlide; | ||||
| 			window.parent.postMessage( JSON.stringify({ namespace: 'reveal', eventName: type, eventArgs: args || null }), '*' ); | ||||
| 		} | ||||
|  | ||||
| 	} | ||||
|  | ||||
| 	/** | ||||
|   | ||||
		Reference in New Issue
	
	Block a user