diff --git a/core/misc/tabledrag.js b/core/misc/tabledrag.js
index 273dcc1..e557f7d 100644
--- a/core/misc/tabledrag.js
+++ b/core/misc/tabledrag.js
@@ -90,7 +90,7 @@ Drupal.tableDrag = function (table, tableSettings) {
   $table.before($('<a href="#" class="tabledrag-toggle-weight"></a>')
     .attr('title', Drupal.t('Re-order rows by numerical weight instead of dragging.'))
     .click(function () {
-      if ($.cookie('Drupal.tableDrag.showWeight') == 1) {
+      if (localStorage.getItem('Drupal.tableDrag.showWeight') === '1') {
         self.hideColumns();
       }
       else {
@@ -112,6 +112,7 @@ Drupal.tableDrag = function (table, tableSettings) {
   // as event handlers do not have direct access to the tableDrag object.
   $(document).bind('mousemove', function (event) { return self.dragRow(event, self); });
   $(document).bind('mouseup', function (event) { return self.dropRow(event, self); });
+  $(window).bind('storage', $.proxy(this.toggleColumns, this));
 };
 
 /**
@@ -120,7 +121,7 @@ Drupal.tableDrag = function (table, tableSettings) {
  *
  * Identify and mark each cell with a CSS class so we can easily toggle
  * show/hide it. Finally, hide columns if user does not have a
- * 'Drupal.tableDrag.showWeight' cookie.
+ * 'Drupal.tableDrag.showWeight' localStorage value.
  */
 Drupal.tableDrag.prototype.initColumns = function () {
   var $table = $(this.table);
@@ -163,20 +164,21 @@ Drupal.tableDrag.prototype.initColumns = function () {
       });
     }
   }
+  this.toggleColumns();
+};
+
+Drupal.tableDrag.prototype.toggleColumns = function () {
+  var showWeight = localStorage.getItem('Drupal.tableDrag.showWeight');
 
-  // Now hide cells and reduce colspans unless cookie indicates previous choice.
-  // Set a cookie if it is not already present.
-  if ($.cookie('Drupal.tableDrag.showWeight') === null) {
-    $.cookie('Drupal.tableDrag.showWeight', 0, {
-      path: Drupal.settings.basePath,
-      // The cookie expires in one year.
-      expires: 365
-    });
+  // Now hide cells and reduce colspans unless localStorage value indicates
+  // previous choice. Set a value if it is not already present.
+  if (showWeight === null) {
+    localStorage.setItem('Drupal.tableDrag.showWeight', '0');
     this.hideColumns();
   }
-  // Check cookie value and show/hide weight columns accordingly.
+  // Check localStorage value and show/hide weight columns accordingly.
   else {
-    if ($.cookie('Drupal.tableDrag.showWeight') == 1) {
+    if (showWeight === '1') {
       this.showColumns();
     }
     else {
@@ -201,12 +203,8 @@ Drupal.tableDrag.prototype.hideColumns = function () {
   });
   // Change link text.
   $('.tabledrag-toggle-weight').text(Drupal.t('Show row weights'));
-  // Change cookie.
-  $.cookie('Drupal.tableDrag.showWeight', 0, {
-    path: Drupal.settings.basePath,
-    // The cookie expires in one year.
-    expires: 365
-  });
+  // Change localStorage.
+  localStorage.setItem('Drupal.tableDrag.showWeight', '0');
   // Trigger an event to allow other scripts to react to this display change.
   $('table.tabledrag-processed').trigger('columnschange', 'hide');
 };
@@ -227,12 +225,8 @@ Drupal.tableDrag.prototype.showColumns = function () {
   });
   // Change link text.
   $('.tabledrag-toggle-weight').text(Drupal.t('Hide row weights'));
-  // Change cookie.
-  $.cookie('Drupal.tableDrag.showWeight', 1, {
-    path: Drupal.settings.basePath,
-    // The cookie expires in one year.
-    expires: 365
-  });
+  // Change localStorage.
+  localStorage.setItem('Drupal.tableDrag.showWeight', '1');
   // Trigger an event to allow other scripts to react to this display change.
   $('table.tabledrag-processed').trigger('columnschange', 'show');
 };
