diff --git a/src/wp-admin/js/customize-controls.js b/src/wp-admin/js/customize-controls.js
index 7c4a631..79bd146 100644
--- a/src/wp-admin/js/customize-controls.js
+++ b/src/wp-admin/js/customize-controls.js
@@ -2153,6 +2153,11 @@
 			api.previewer.previewUrl( api.settings.url.home );
 		}
 
+		// Trigger 'unload' event when user navigate around during preview
+		api.previewer.previewUrl.bind(function () {
+			api.previewer.send( 'unload' );
+		});
+
 		// Save and activated states
 		(function() {
 			var state = new api.Values(),
diff --git a/src/wp-includes/class-wp-customize-manager.php b/src/wp-includes/class-wp-customize-manager.php
index b695271..4a6e4a5 100644
--- a/src/wp-includes/class-wp-customize-manager.php
+++ b/src/wp-includes/class-wp-customize-manager.php
@@ -432,6 +432,7 @@ final class WP_Customize_Manager {
 		add_action( 'wp', array( $this, 'customize_preview_override_404_status' ) );
 		add_action( 'wp_head', array( $this, 'customize_preview_base' ) );
 		add_action( 'wp_head', array( $this, 'customize_preview_html5' ) );
+		add_action( 'wp_head', array( $this, 'customize_preview_loading_style' ) );
 		add_action( 'wp_footer', array( $this, 'customize_preview_settings' ), 20 );
 		add_action( 'shutdown', array( $this, 'customize_preview_signature' ), 1000 );
 		add_filter( 'wp_die_handler', array( $this, 'remove_preview_signature' ) );
@@ -491,6 +492,18 @@ final class WP_Customize_Manager {
 		<![endif]--><?php
 	}
 
+	public function customize_preview_loading_style() {
+		?><style>
+			body.customizer-navigating-away {
+				opacity: 0.25;
+				cursor: progress !important;
+			}
+			body.customizer-navigating-away * {
+				pointer-events: none !important;
+			}
+		</style><?php
+	}
+
 	/**
 	 * Print JavaScript settings for preview frame.
 	 *
diff --git a/src/wp-includes/js/customize-preview.js b/src/wp-includes/js/customize-preview.js
index 82f7bb8..4020246 100644
--- a/src/wp-includes/js/customize-preview.js
+++ b/src/wp-includes/js/customize-preview.js
@@ -115,6 +115,12 @@
 			activeControls: api.settings.activeControls
 		} );
 
+		// Display a loading indicator when user navigate around during preview
+		api.preview.bind( 'unload', function () {
+			$( 'body' ).addClass( 'customizer-navigating-away' );
+			$( 'html' ).prop( 'title', 'Loading...' );
+		});
+
 		/* Custom Backgrounds */
 		bg = $.map(['color', 'image', 'position_x', 'repeat', 'attachment'], function( prop ) {
 			return 'background_' + prop;
-- 
2.2.2

