Index: wp-content/themes/twentyfourteen/inc/widgets.php
===================================================================
--- wp-content/themes/twentyfourteen/inc/widgets.php	(revision 26366)
+++ wp-content/themes/twentyfourteen/inc/widgets.php	(working copy)
@@ -81,6 +81,12 @@
 		$content = get_transient( $this->id );
 
 		if ( false !== $content ) {
+			// Workaround for enqueuing MediaElement.js when using cached content
+			if ( get_transient( $this->id . '_mejs' ) ) {
+				wp_enqueue_style( 'wp-mediaelement' );
+				wp_enqueue_script( 'wp-mediaelement' );
+			}
+
 			echo $content;
 			return;
 		}
@@ -88,6 +94,9 @@
 		ob_start();
 		extract( $args, EXTR_SKIP );
 
+		// Check if MediaElement.js has been enqueued before loop
+		$mediaelements_before = wp_script_is( 'wp-mediaelement' );
+
 		$format = $instance['format'];
 		$number = empty( $instance['number'] ) ? 2 : absint( $instance['number'] );
 		$title  = apply_filters( 'widget_title', empty( $instance['title'] ) ? $this->format_strings[ $format ] : $instance['title'], $instance, $this->id_base );
@@ -215,6 +224,14 @@
 
 		endif; // End check for ephemeral posts.
 
+		// Check if MediaElement.js has been enqueued after loop
+		$mediaelements_after = wp_script_is( 'wp-mediaelement' );
+
+		// Set transient if MediaElement.js has been enqueued during loop
+		if ( true === $mediaelements_after && false === $mediaelements_before ) {
+			set_transient( $this->id . '_mejs', true );
+		}
+
 		set_transient( $this->id, ob_get_flush() );
 	}
 
@@ -249,6 +266,7 @@
 	 */
 	function flush_widget_cache() {
 		delete_transient( $this->id );
+		delete_transient( $this->id . '_mejs' );
 	}
 
 	/**
