diff --git a/plugin/notes/notes.html b/plugin/notes/notes.html
index 5b75d736e85..0c4eca58eb7 100644
--- a/plugin/notes/notes.html
+++ b/plugin/notes/notes.html
@@ -34,6 +34,22 @@
z-index: 2;
}
+ #connection-status {
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ z-index: 20;
+ padding: 30% 20% 20% 20%;
+ font-size: 18px;
+ color: #222;
+ background: #fff;
+ text-align: center;
+ box-sizing: border-box;
+ line-height: 1.4;
+ }
+
.overlay-element {
height: 34px;
line-height: 34px;
@@ -288,6 +304,8 @@
+ Loading speaker view...
+
Upcoming
@@ -340,8 +358,16 @@
Notes
setupLayout();
+ var connectionStatus = document.querySelector( '#connection-status' );
+ var connectionTimeout = setTimeout( function() {
+ connectionStatus.innerHTML = 'Error connecting to main window.
Please try closing and reopening the speaker view.';
+ }, 5000 );
+
window.addEventListener( 'message', function( event ) {
+ clearTimeout( connectionTimeout );
+ connectionStatus.style.display = 'none';
+
var data = JSON.parse( event.data );
// The overview mode is only useful to the reveal.js instance
diff --git a/plugin/notes/notes.js b/plugin/notes/notes.js
index 3f00eb6bd7f..76228583721 100644
--- a/plugin/notes/notes.js
+++ b/plugin/notes/notes.js
@@ -21,6 +21,11 @@ var RevealNotes = (function() {
var notesPopup = window.open( notesFilePath, 'reveal.js - Notes', 'width=1100,height=700' );
+ if( !notesPopup ) {
+ alert( 'Speaker view popup failed to open. Please make sure popups are allowed and reopen the speaker view.' );
+ return;
+ }
+
// Allow popup window access to Reveal API
notesPopup.Reveal = this.Reveal;