Index: wp-includes/js/autosave.js
===================================================================
--- wp-includes/js/autosave.js	(revision 6417)
+++ wp-includes/js/autosave.js	(working copy)
@@ -1,6 +1,10 @@
 var autosaveLast = '';
 var autosavePeriodical;
 
+function disable_autosave() {
+	autosavePeriodical.currentlyExecuting = true;
+}
+
 function autosave_start_timer() {
 	var form = $('post');
 	autosaveLast = form.post_title.value+form.content.value;
@@ -8,20 +12,22 @@
 	autosavePeriodical = new PeriodicalExecuter(autosave, autosaveL10n.autosaveInterval);
 	//Disable autosave after the form has been submitted
 	if(form.addEventListener) {
-		form.addEventListener("submit", function () { autosavePeriodical.currentlyExecuting = true; }, false);
+		Event.observe('post', 'submit', disable_autosave);
 	}
 	if(form.attachEvent) {
-		form.save ? form.save.attachEvent("onclick", function () { autosavePeriodical.currentlyExecuting = true; }) : null;
-		form.submit ? form.submit.attachEvent("onclick", function () { autosavePeriodical.currentlyExecuting = true; }) : null;
-		form.publish ? form.publish.attachEvent("onclick", function () { autosavePeriodical.currentlyExecuting = true; }) : null;
-		form.deletepost ? form.deletepost.attachEvent("onclick", function () { autosavePeriodical.currentlyExecuting = true; }) : null;
+		Event.observe('save', 'click', disable_autosave);
+		Event.observe('submit', 'click', disable_autosave);
+		Event.observe('publish', 'click', disable_autosave);
+		Event.observe('deletepost', 'click', disable_autosave);
 	}
+	Event.observe('tags-input', 'focus', function() { autosavePeriodical.saveTags = false; });
+	Event.observe('tags-input', 'blur', function() { autosavePeriodical.saveTags = true; });
 }
 addLoadEvent(autosave_start_timer)
 
 function autosave_cur_time() {
 	var now = new Date();
-	return "" + ((now.getHours() >12) ? now.getHours() -12 : now.getHours()) + 
+	return "" + ((now.getHours() >12) ? now.getHours() -12 : now.getHours()) +
 	((now.getMinutes() < 10) ? ":0" : ":") + now.getMinutes() +
 	((now.getSeconds() < 10) ? ":0" : ":") + now.getSeconds();
 }
@@ -131,7 +137,8 @@
 	autosaveAjax.setVar("post_ID", $("post_ID").value);
 	autosaveAjax.setVar("post_title", form.post_title.value);
 	autosaveAjax.setVar("post_type", form.post_type.value);
-	autosaveAjax.setVar("tags_input", form.tags_input.value);
+	if ( autosavePeriodical.saveTags )
+		autosaveAjax.setVar("tags_input", form.tags_input.value);
 	if ( form.comment_status.checked )
 		autosaveAjax.setVar("comment_status", 'open');
 	if ( form.ping_status.checked )
