diff options
author | Hakim El Hattab <hakim.elhattab@gmail.com> | 2012-11-10 17:02:12 -0500 |
---|---|---|
committer | Hakim El Hattab <hakim.elhattab@gmail.com> | 2012-11-10 17:02:12 -0500 |
commit | 42766b1bfac3409eb5ec312e57d007b749edce8b (patch) | |
tree | 856e67722b515789fb0d55cd2e89727a8d46cd54 | |
parent | b42890d1a2db6759125a97dbab5d3b9454c4a5c8 (diff) | |
parent | a7c3543069abc7525e3d4fd7a03a82afdc8a0d63 (diff) | |
download | fosdem-2018-presentation-42766b1bfac3409eb5ec312e57d007b749edce8b.tar fosdem-2018-presentation-42766b1bfac3409eb5ec312e57d007b749edce8b.tar.gz |
Merge branch 'master' of https://github.com/sithmel/reveal.js
merge postmessage api
-rw-r--r-- | plugin/postmessage/iframe_example.html | 34 | ||||
-rw-r--r-- | plugin/postmessage/postmessage.js | 40 |
2 files changed, 74 insertions, 0 deletions
diff --git a/plugin/postmessage/iframe_example.html b/plugin/postmessage/iframe_example.html new file mode 100644 index 0000000..6e5709d --- /dev/null +++ b/plugin/postmessage/iframe_example.html @@ -0,0 +1,34 @@ +<html> +<body> + <iframe id="reveal" src="reveal.js/index.html" 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> diff --git a/plugin/postmessage/postmessage.js b/plugin/postmessage/postmessage.js new file mode 100644 index 0000000..176d230 --- /dev/null +++ b/plugin/postmessage/postmessage.js @@ -0,0 +1,40 @@ +/* +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 (Reveal[method]){ + Reveal[method].apply(Reveal, data.args); + } +}, false); +}()); + + + |