From a7c3543069abc7525e3d4fd7a03a82afdc8a0d63 Mon Sep 17 00:00:00 2001 From: Maurizio Lupo Date: Wed, 31 Oct 2012 15:36:26 +0100 Subject: [PATCH] added a simple postmessage plugin --- plugin/postmessage/iframe_example.html | 34 ++++++++++++++++++++++ plugin/postmessage/postmessage.js | 40 ++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 plugin/postmessage/iframe_example.html create mode 100644 plugin/postmessage/postmessage.js diff --git a/plugin/postmessage/iframe_example.html b/plugin/postmessage/iframe_example.html new file mode 100644 index 00000000..6e5709d0 --- /dev/null +++ b/plugin/postmessage/iframe_example.html @@ -0,0 +1,34 @@ + + + +
+ + + +
+ + + diff --git a/plugin/postmessage/postmessage.js b/plugin/postmessage/postmessage.js new file mode 100644 index 00000000..176d2306 --- /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); +}()); + + +