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. Как так получается, я даже не представляю. Возможно, у вас будут какие-то предложения? Заранее спасибо! |
TTATPuOT,
через атрибут делайте.
$('#streams').attr('checked', 'checked');
$('#streams').removeAttr('checked');
|
Нашёл проблему :)
Оказывается, переменная внутри хранитеся в String формате, а не в boolean. Но спасибо, что ответили. |
Цитата:
|
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, время: 18:09. |