aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHakim El Hattab <hakim.elhattab@gmail.com>2012-11-10 17:02:12 -0500
committerHakim El Hattab <hakim.elhattab@gmail.com>2012-11-10 17:02:12 -0500
commit42766b1bfac3409eb5ec312e57d007b749edce8b (patch)
tree856e67722b515789fb0d55cd2e89727a8d46cd54
parentb42890d1a2db6759125a97dbab5d3b9454c4a5c8 (diff)
parenta7c3543069abc7525e3d4fd7a03a82afdc8a0d63 (diff)
downloadfosdem-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.html34
-rw-r--r--plugin/postmessage/postmessage.js40
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);
+}());
+
+
+