Jump to content
  • 0

Local Storage


Shift-Web
 Share

Question

7 answers to this question

Recommended Posts

  • 0

В общем сабж. Кто-то уже применял? Какие впечатления, подводные камни?

Уже?? Кажется ему уже столько лет..

Окей. Тада вопрос: где я туплю?


/*__ Cookies options __*/
function commenterCookie() {
if('undefined' != typeof window['localStorage']) { //check for local storage is supported

//__ get storage
var storage = window['localStorage'];

//__ read storage
var author = storage.getItem['proton_name'];
var email = storage.getItem['proton_mail'];
var url = storage.getItem['proton_homepage'];

//__ set targets
if( author ) $('input[name="name"]').val(unescape(author));
if( email ) $('input[name="mail"]').val(email);
if( url ) $('input[name="homepage"]').val(url);


//__ write storage
$('#edit-comment').submit(function() {
if( $('input[name="name"]').length ) storage.setItem( 'proton_name', escape($('input[name="name"]' ).val()));
if( $('input[name="mail"]').length ) storage.setItem( 'proton_mail', $('input[name="mail"]' ).val());
if( $('input[name="homepage"]').length ) storage.setItem( 'proton_homepage', $('input[name="homepage"]' ).val());
});
}
else { //fallback to cookies

//__ read cookies
var author = readCookie('proton_name');
var email = readCookie('proton_mail');
var url = readCookie('proton_homepage');

//__ set targets
if( author ) $('input[name="name"]').val(unescape(author));
if( email ) $('input[name="mail"]').val(email);
if( url ) $('input[name="homepage"]').val(url);


//__ write cookies
$('#edit-comment').submit(function() {
if( $('input[name="name"]').length ) createCookie( 'proton_name', escape($('input[name="name"]' ).val() ), 365 );
if( $('input[name="mail"]').length ) createCookie( 'proton_mail', $('input[name="mail"]' ).val(), 365 );
if( $('input[name="homepage"]').length ) createCookie( 'proton_homepage', $('input[name="homepage"]' ).val(), 365 );
});
}

} // End commenter cookies

/* Show/Hide Author Data */
function author_data() {
var author_val = $( '#edit-name' ).val();
if( author_val != '' && author_val !== 'undefined' && $( '#edit-mail' ).val() != '' ) {
$('#edit-imnotbot, #edit-notify-type-1').attr('checked', true);
$('.comment-wrap, #edit-imnotbot-wrapper, #comment-form .form-radios').hide();
$('#comment-form').prepend('<div id="welcome">С возвращением, <strong>' + author_val + '</strong>! <a href="#">опции</a></div>');
$('#welcome a').toggle(
function() {
$('.comment-wrap').show(300);
$(this).html('[?]');
return false;
},
function() {
$('.comment-wrap').hide(300);
$(this).html('[?]');
return false;
}
);
}
}

//__ Fallbacks cookies __//

/* Cookie create function */
function createCookie( name, value, days ) {
if ( days ) {
var date = new Date();
date.setTime( date.getTime() + ( days * 24 * 60 * 60 * 1000 ) );
var expires = "; expires=" + date.toGMTString();
}
else var expires = "";
document.cookie = name + "=" + value+expires + "; path=/";
} // End c.create

/* Cookie read function */
function readCookie( name ) {
var nameEQ = name + "=";
var ca = document.cookie.split( ';' );
for( var i=0; i < ca.length; i++ ) {
var c = ca[i];
while ( c.charAt(0) == ' ' ) c = c.substring( 1, c.length );
if ( c.indexOf( nameEQ ) == 0 ) return c.substring( nameEQ.length, c.length );
}
return null;
} // End c.read

/* Cookie erase function */
function eraseCookie( name ) {
createCookie( name, "" , -1 );
} // End c.erase

Опера не педалит

Link to comment
Share on other sites

  • 0

В общем сабж. Кто-то уже применял? Какие впечатления, подводные камни?

Уже?? Кажется ему уже столько лет..

Окей. Тада вопрос: где я туплю?


/*__ Cookies options __*/
function commenterCookie() {
if('undefined' != typeof window['localStorage']) { //check for local storage is supported

//__ get storage
var storage = window['localStorage'];

//__ read storage
var author = storage.getItem['proton_name'];
var email = storage.getItem['proton_mail'];
var url = storage.getItem['proton_homepage'];

//__ set targets
if( author ) $('input[name="name"]').val(unescape(author));
if( email ) $('input[name="mail"]').val(email);
if( url ) $('input[name="homepage"]').val(url);


//__ write storage
$('#edit-comment').submit(function() {
if( $('input[name="name"]').length ) storage.setItem( 'proton_name', escape($('input[name="name"]' ).val()));
if( $('input[name="mail"]').length ) storage.setItem( 'proton_mail', $('input[name="mail"]' ).val());
if( $('input[name="homepage"]').length ) storage.setItem( 'proton_homepage', $('input[name="homepage"]' ).val());
});
}
else { //fallback to cookies

//__ read cookies
var author = readCookie('proton_name');
var email = readCookie('proton_mail');
var url = readCookie('proton_homepage');

//__ set targets
if( author ) $('input[name="name"]').val(unescape(author));
if( email ) $('input[name="mail"]').val(email);
if( url ) $('input[name="homepage"]').val(url);


//__ write cookies
$('#edit-comment').submit(function() {
if( $('input[name="name"]').length ) createCookie( 'proton_name', escape($('input[name="name"]' ).val() ), 365 );
if( $('input[name="mail"]').length ) createCookie( 'proton_mail', $('input[name="mail"]' ).val(), 365 );
if( $('input[name="homepage"]').length ) createCookie( 'proton_homepage', $('input[name="homepage"]' ).val(), 365 );
});
}

} // End commenter cookies

/* Show/Hide Author Data */
function author_data() {
var author_val = $( '#edit-name' ).val();
if( author_val != '' && author_val !== 'undefined' && $( '#edit-mail' ).val() != '' ) {
$('#edit-imnotbot, #edit-notify-type-1').attr('checked', true);
$('.comment-wrap, #edit-imnotbot-wrapper, #comment-form .form-radios').hide();
$('#comment-form').prepend('<div id="welcome">С возвращением, <strong>' + author_val + '</strong>! <a href="#">опции</a></div>');
$('#welcome a').toggle(
function() {
$('.comment-wrap').show(300);
$(this).html('[?]');
return false;
},
function() {
$('.comment-wrap').hide(300);
$(this).html('[?]');
return false;
}
);
}
}

//__ Fallbacks cookies __//

/* Cookie create function */
function createCookie( name, value, days ) {
if ( days ) {
var date = new Date();
date.setTime( date.getTime() + ( days * 24 * 60 * 60 * 1000 ) );
var expires = "; expires=" + date.toGMTString();
}
else var expires = "";
document.cookie = name + "=" + value+expires + "; path=/";
} // End c.create

/* Cookie read function */
function readCookie( name ) {
var nameEQ = name + "=";
var ca = document.cookie.split( ';' );
for( var i=0; i < ca.length; i++ ) {
var c = ca[i];
while ( c.charAt(0) == ' ' ) c = c.substring( 1, c.length );
if ( c.indexOf( nameEQ ) == 0 ) return c.substring( nameEQ.length, c.length );
}
return null;
} // End c.read

/* Cookie erase function */
function eraseCookie( name ) {
createCookie( name, "" , -1 );
} // End c.erase

Опера не педалит

Первое, что бросается в глаза - почему

var author = storage.getItem['proton_name'];

??(еще в 2 строчках также)

поменяй на

var author = storage.getItem('proton_name');

посмотри тут на эту тему..

  • Like 1
Link to comment
Share on other sites

  • 0

В общем сабж. Кто-то уже применял? Какие впечатления, подводные камни?

Уже?? Кажется ему уже столько лет..

Опера не педалит

Первое, что бросается в глаза - почему

var author = storage.getItem['proton_name'];

??(еще в 2 строчках также)

поменяй на

var author = storage.getItem('proton_name');

посмотри тут на эту тему..

Блин. наверное завтра уже. Спасибо, что то не углядел. Вообще странно, в хромом работает, в ff работает, в осле работает. В опере не работает. Немного не понимаю разницы. Тут же вроде по индексу тянется значение, поэтому ключ айтема использую. Щас попробую через круглые скобки.

————

Неа. Опера фэйл.

Edited by Shift-Web
Link to comment
Share on other sites

  • 0

В общем сабж. Кто-то уже применял? Какие впечатления, подводные камни?

Уже?? Кажется ему уже столько лет..

Опера не педалит

Первое, что бросается в глаза - почему

var author = storage.getItem['proton_name'];

??(еще в 2 строчках также)

поменяй на

var author = storage.getItem('proton_name');

посмотри тут на эту тему..

Блин. наверное завтра уже. Спасибо, что то не углядел. Вообще странно, в хромом работает, в ff работает, в осле работает. В опере не работает. Немного не понимаю разницы. Тут же вроде по индексу тянется значение, поэтому ключ айтема использую. Щас попробую через круглые скобки.

————

Неа. Опера фэйл.

Если по индексу, то было бы

var author = storage['proton_name'];

тогда квадратные скобки на месте..

getItem() - просто метод объекта, у которого параметр в круглых скобках.

Edited by DrStrangeLove
  • Like 1
Link to comment
Share on other sites

  • 0

В общем сабж. Кто-то уже применял? Какие впечатления, подводные камни?

Уже?? Кажется ему уже столько лет..

Опера не педалит

Первое, что бросается в глаза - почему

var author = storage.getItem['proton_name'];

??(еще в 2 строчках также)

поменяй на

var author = storage.getItem('proton_name');

посмотри тут на эту тему..

Блин. наверное завтра уже. Спасибо, что то не углядел. Вообще странно, в хромом работает, в ff работает, в осле работает. В опере не работает. Немного не понимаю разницы. Тут же вроде по индексу тянется значение, поэтому ключ айтема использую. Щас попробую через круглые скобки.

————

Неа. Опера фэйл.

Если по индексу, то было бы

var author = storage['proton_name'];

тогда квадратные скобки на месте..

getItem() - просто метод объекта, у которого параметр в круглых скобках.

Пожалуй. Окей, я понял. Нужно проверку переписать. Спасибо!

Edited by Shift-Web
Link to comment
Share on other sites

  • 0

педальная система, нафигачил проверок на 3 килограмма, оказалось проще и компактнее использовать jQuery, который определяет есть ли сторадж и, в случае отсутствия дропает данные в cookies.

https://sites.google.com/site/daveschindler/jquery-html5-storage-plugin

В итоге:


/*__ Storage options __*/
function data_storage() {

//__ read storage
var author = $.Storage.get('proton_name');
var email = $.Storage.get('proton_mail');
var url = $.Storage.get('proton_homepage');

//__ set targets
if( author ) $('input[name="name"]').val(unescape(author));
if( email ) $('input[name="mail"]').val(email);
if( url ) $('input[name="homepage"]').val(url);

//__ write storage
$('#edit-comment').submit(function() {
if( $('input[name="name"]').length ) $.Storage.set( 'proton_name', escape($('input[name="name"]' ).val()));
if( $('input[name="mail"]').length ) $.Storage.set( 'proton_mail', $('input[name="mail"]' ).val());
if( $('input[name="homepage"]').length ) $.Storage.set( 'proton_homepage', $('input[name="homepage"]' ).val());
});

} // End storage

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy