summaryrefslogtreecommitdiff
path: root/reveal.js-2.6.2/plugin/postmessage/postmessage.js
blob: d0f41407857162fe59bab3ac52504808e4e2d7eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*

	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);

}());