Index: wp-includes/js/autosave.js
===================================================================
--- wp-includes/js/autosave.js	(revision 24747)
+++ wp-includes/js/autosave.js	(working copy)
@@ -524,8 +524,8 @@
 	init: function( settings ) {
 		var self = this;
 
-		// Check if the browser supports sessionStorage and editor.js is loaded
-		if ( ! this.checkStorage() || typeof switchEditors == 'undefined' )
+		// Check if the browser supports sessionStorage and it's not disabled
+		if ( ! this.checkStorage() )
 			return;
 
 		// Don't run if the post type supports neither 'editor' (textarea#content) nor 'excerpt'.
@@ -538,24 +538,16 @@
 		if ( !this.blog_id )
 			this.blog_id = typeof window.autosaveL10n != 'undefined' ? window.autosaveL10n.blog_id : 0;
 
-		this.checkPost();
 		$(document).ready( function(){ self.run(); } );
 	},
 
 	// Run on DOM ready
 	run: function() {
-		var self = this, post_data;
+		var self = this;
 
-		// Set the comparison string
-		if ( !this.lastsaveddata ) {
-			post_data = wp.autosave.getPostData();
+		// Check if the local post data is different than the loaded post data.
+		this.checkPost();
 
-			if ( post_data.content && $('#wp-content-wrap').hasClass('tmce-active') )
-				this.lastsaveddata = post_data.post_title + ': ' + switchEditors.pre_wpautop( post_data.content );
-			else
-				this.lastsaveddata = post_data.post_title + ': ' + post_data.content;
-		}
-
 		// Set the schedule
 		this.schedule = $.schedule({
 			time: 15 * 1000,
@@ -605,7 +597,7 @@
 	 * @return void
 	 */
 	checkPost: function() {
-		var self = this, post_data = this.getData(), content, check_data, strip_tags = false, notice,
+		var self = this, post_data = this.getData(), content, post_title, excerpt, notice,
 			post_id = $('#post_ID').val() || 0, cookie = wpCookies.get( 'wp-saving-post-' + post_id );
 
 		if ( ! post_data )
@@ -625,20 +617,24 @@
 		if ( $('#has-newer-autosave').length )
 			return;
 
-		// cookie == 'check' means the post was not saved properly, always show #local-storage-notice
-		if ( cookie != 'check' ) {
-			content = $('#content').val();
-			check_data = $.extend( {}, post_data );
+		content = $('#content').val() || '';
+		post_title = $('#title').val() || '';
+		excerpt = $('#excerpt').val() || '';
 
-			if ( $('#wp-content-wrap').hasClass('tmce-active') )
-				content = switchEditors.pre_wpautop( content );
+		if ( $('#wp-content-wrap').hasClass('tmce-active') && typeof switchEditors != 'undefined' )
+			content = switchEditors.pre_wpautop( content );
 
-			if ( this.compare( content, check_data.content ) && this.compare( $('#title').val(), check_data.post_title ) && this.compare( $('#excerpt').val(), check_data.excerpt ) )
-				return;
+		// cookie == 'check' means the post was not saved properly, always show #local-storage-notice
+		if ( cookie != 'check' && this.compare( content, post_data.content ) && this.compare( title, post_data.post_title ) && this.compare( excerpt, post_data.excerpt ) ) {
+			return;
 		}
 
 		this.restore_post_data = post_data;
-		this.undo_post_data = wp.autosave.getPostData();
+		this.undo_post_data = {
+			content: content,
+			post_title: post_title,
+			excerpt: excerpt
+		};
 
 		notice = $('#local-storage-notice');
 		$('.wrap h2').first().after( notice.addClass('updated').show() );
@@ -674,7 +670,7 @@
 			$('#excerpt').val( post_data.excerpt || '' );
 			editor = typeof tinymce != 'undefined' && tinymce.get('content');
 
-			if ( editor && ! editor.isHidden() ) {
+			if ( editor && ! editor.isHidden() && typeof switchEditors != 'undefined' ) {
 				// Make sure there's an undo level in the editor
 				editor.undoManager.add();
 				editor.setContent( post_data.content ? switchEditors.wpautop( post_data.content ) : '' );
Index: wp-includes/script-loader.php
===================================================================
--- wp-includes/script-loader.php	(revision 24747)
+++ wp-includes/script-loader.php	(working copy)
@@ -103,7 +103,7 @@
 		'dismiss' => __('Dismiss'),
 	) );
 
-	$scripts->add( 'autosave', "/wp-includes/js/autosave$suffix.js", array('schedule', 'wp-ajax-response', 'editor'), false, 1 );
+	$scripts->add( 'autosave', "/wp-includes/js/autosave$suffix.js", array('schedule', 'wp-ajax-response'), false, 1 );
 
 	$scripts->add( 'heartbeat', "/wp-includes/js/heartbeat$suffix.js", array('jquery'), false, 1 );
 	did_action( 'init' ) && $scripts->localize( 'heartbeat', 'heartbeatSettings',
