Как отследить изменившееся значение sessionStorage и поместить в переменную?

211
16 декабря 2018, 11:10

В проекте есть таблица Bootstrap, состоящая из трех колонок. Подключен плагин colresizable для того чтобы иметь возможность изменять ширину колонок таблицы. И для того чтобы сохранять измененные ширины колонок таблицы пользователем, в скрипте включено свойство postbackSafe, которое сохраняет все изменения в sessionStorage. И вот вопрос, допустим пользователь изменил ширину колонок, и какие-то значения в sessionStorage поменялись, как отследить изменившиеся там значения и поместить в переменную?

$("#flex").colResizable({ 
  liveDrag: true, 
  resizeMode: 'flex', 
  postbackSafe: true 
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
<!-- Resizable columns --> 
<script src="https://rawgit.com/alvaro-prieto/colResizable/master/colResizable-1.6.js"></script> 
 
 
<div class="container"> 
  <h2>Bordered Table</h2> 
  <p>The .table-bordered class adds borders to a table:</p> 
  <table class="table table-bordered" id="flex"> 
    <thead> 
      <tr> 
        <th>Firstname</th> 
        <th>Lastname</th> 
        <th>Email</th> 
      </tr> 
    </thead> 
    <tbody> 
      <tr> 
        <td>John</td> 
        <td>Doe</td> 
        <td>john@example.com</td> 
      </tr> 
      <tr> 
        <td>Mary</td> 
        <td>Moe</td> 
        <td>mary@example.com</td> 
      </tr> 
      <tr> 
        <td>July</td> 
        <td>Dooley</td> 
        <td>july@example.com</td> 
      </tr> 
    </tbody> 
  </table> 
</div>

Answer 1

Думаю, вам не надо следить за sessionStorage. В плагине есть событие изменения ширины onResize. Вот на него и подписывайтесь, получайте значение ширины, записывайте в переменную.

Пример из документации:

$(function(){
  var onSampleResized = function(e){  
    var table = $(e.currentTarget); //reference to the resized table
  };  
  $("#flex").colResizable({
     liveDrag: true,
     resizeMode: 'flex',
     postbackSafe: true,
     onResize: onSampleResized
  });
});

Пример вычисления ширины.

function onSampleResized(e) { 
  var $table = $(e.currentTarget); 
  console.clear(); 
  $table.find('th').each(function(i) { 
    console.log(`column: ${i}; width: ${$(this).width()}`); 
  }); 
} 
$("#flex").colResizable({ 
  liveDrag: true, 
  resizeMode: 'flex', 
  postbackSafe: true, 
  onResize: onSampleResized 
});
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 
<!-- Resizable columns --> 
<script src="https://rawgit.com/alvaro-prieto/colResizable/master/colResizable-1.6.js"></script> 
 
 
<div class="container"> 
  <h2>Bordered Table</h2> 
  <p>The .table-bordered class adds borders to a table:</p> 
  <table class="table table-bordered" id="flex"> 
    <thead> 
      <tr> 
        <th>Firstname</th> 
        <th>Lastname</th> 
        <th>Email</th> 
      </tr> 
    </thead> 
    <tbody> 
      <tr> 
        <td>John</td> 
        <td>Doe</td> 
        <td>john@example.com</td> 
      </tr> 
      <tr> 
        <td>Mary</td> 
        <td>Moe</td> 
        <td>mary@example.com</td> 
      </tr> 
      <tr> 
        <td>July</td> 
        <td>Dooley</td> 
        <td>july@example.com</td> 
      </tr> 
    </tbody> 
  </table> 
</div>

Answer 2

В хроме можно посмотреть с каким ключом и значением сохраняется.

Получить можно через

let variable = sessionStorage.getItem('key')

API документация

READ ALSO
Ошибки в консоли при запуске live-server

Ошибки в консоли при запуске live-server

При запуске live-server для автоматического обновления страницы в консоли всегда появляются три ошибки, причем они присутствуют всегда даже если...

206
Нужно привязать клавижу клавиатуры к button с помощью javascript

Нужно привязать клавижу клавиатуры к button с помощью javascript

Мне нужно привязать клавишу клавиатуры к button, чтобы при нажатии она активировалась, и происходило какое-то действие

219
UNKNOWN: unknown error, open

UNKNOWN: unknown error, open

При сборке проекта gulp выдает ошибку такого вида:

247
Mysql.Connect python создает неугодные кавычки

Mysql.Connect python создает неугодные кавычки

Дообр день, уважаемые знатоки! Я использую mysqlConnector и python 36

204