diff --git a/js/reveal.js b/js/reveal.js
index 42edf904d1ae95a59f558ce0badf9f266871479a..1238f9f5f48f2558a2817ab70d65247c185c933e 100644
--- a/js/reveal.js
+++ b/js/reveal.js
@@ -575,11 +575,16 @@ var Reveal = (function(){
 
 		if( config.postMessage ) {
 			window.addEventListener( 'message', function ( event ) {
-				var data = JSON.parse( event.data );
-				var method = Reveal[data.method];
+				var data = event.data;
 
-				if( typeof method === 'function' ) {
-					method.apply( Reveal, data.args );
+				// Make sure we're dealing with JSON
+				if( data.charAt( 0 ) === '{' && data.charAt( data.length - 1 ) === '}' ) {
+					data = JSON.parse( data );
+
+					// Check if the requested method can be found
+					if( data.method && typeof Reveal[data.method] === 'function' ) {
+						Reveal[data.method].apply( Reveal, data.args );
+					}
 				}
 			}, false );
 		}