Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   localStorage в расширениях Chrome (https://javascript.ru/forum/jquery/61278-localstorage-v-rasshireniyakh-chrome.html)

TTATPuOT 11.02.2016 17:57

localStorage в расширениях Chrome
 
Здрасте!
Решил попробовать себя в ролик разработчика приложений для Хрома и сразу же наткнулся на проблему. Специализированного форума по этому делу я как-то не нашёл и решил написать сюда, авось и кто знает :)

Есть код с использованием jQuery:
jQuery(document).ready(function($) {
	function readProperty(property, defValue){
		if(localStorage[property] == null){
			return defValue;
		}
		return localStorage[property];
	}
	$("#streams").prop('checked', readProperty("streams", true));

	$("#streams").change(function(){
		localStorage["streams"] = $(this).prop('checked');
	});
});

А в HTML есть чек-бокс с id "streams".
Проблема в том, что как-бы я не менял содержимое localStorage["streams"] - чек-бокс с id "streams" всегда отмечен. Т.е. localStorage["streams"] возвращает true. Но если попробовать проверить эту переменную через alert, например, то она будет false.
Как так получается, я даже не представляю. Возможно, у вас будут какие-то предложения?

Заранее спасибо!

destus 11.02.2016 18:37

TTATPuOT,
через атрибут делайте.

$('#streams').attr('checked', 'checked');
$('#streams').removeAttr('checked');

TTATPuOT 11.02.2016 19:23

Нашёл проблему :)
Оказывается, переменная внутри хранитеся в String формате, а не в boolean. Но спасибо, что ответили.

laimas 12.02.2016 07:04

Цитата:

Сообщение от destus
через атрибут делайте.

$(selector).prop('checked', 1/0)

рони 12.02.2016 09:44

localStorage and checkbox
 
TTATPuOT,
<!DOCTYPE HTML>

<html>

<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">

  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

  <script>
   jQuery(document).ready(function($) {
	function readProperty(property, defValue){
		if(localStorage[property] == null){
			return defValue;
		}
		return JSON.parse(localStorage[property]);
	}
	$("#streams").prop('checked', readProperty("streams", true));

	$("#streams").change(function(){
		localStorage["streams"] = JSON.stringify($(this).prop('checked'));
	});
});

  </script>
</head>

<body>
 <input id="streams" name="" type="checkbox">
</body>

</html>


Часовой пояс GMT +3, время: 11:02.