File: README.md

Recommend this page to a friend!
  Classes of Jason Gerfen   jQuery.handleStorage   README.md   Download  
File: README.md
Role: Documentation
Content type: text/plain
Description: Documentation
Class: jQuery.handleStorage
Save forms in cookies, local or session storage
Author: By
Last change: Update README.md
Date: 9 years ago
Size: 8,153 bytes
 

Contents

Class file image Download
# Depreciated, succeeded by [secStore.js](https://github.com/jas-/secStore.js) #jQuery plugin to impliment HTML5 form storage Supports HTML5 localStorage, sessionStorage or cookie support for older browsers. Optional AES encryption support. Optional degraded cookie support (with plug-in, see *requirements). Now supports auto-save for form elements to prevent loss of work prior to form submission. Fork me @ https://www.github.com/jas-/jQuery.handleStorage ## REQUIREMENTS: * jQuery libraries (required - http://www.jquery.com) * jQuery cookie plugin (optional - http://plugins.jquery.com/files/jquery.cookie.js.txt) * Gibberish-AES libraries (optional - https://github.com/mdp/gibberish-aes) ## FEATURES: * HTML5 localStorage support * HTML5 sessionStorage support * Cookie support * AES encryption support * Quota support (4k for cookies and 5mb for HTML5 mechanisms) ## OPTIONS: * appID: Unique application identifier * interval: Auto-save interval (default is 5sec) * storage: HTML5 localStorage, sessionStorage and cookies supported * aes: Use AES encryption for client storage objects * callback: Executes a callback function on success saves * preCallback: Executes a callback function prior to any saves * errCallback: Executes a callback function when any save was unsuccessful ## NOTES: A quick note on security. Currently (02.17.2012), a cross-domain bypass proof of concept vulnerability exists. Reference: http://www.securityfocus.com/bid/51765/discuss To help protect sensitive data employing the optional AES feature will assist in protecting the client storage information, moreover, local browser compromises exist when two people use the same machine. If you would like to provide the more secure method of saving form data the use of the 'sessionStorage' option will provide a 'per session' method of auto-saving to the client storage mechanisms. Additionally the use of the optional AES encryption feature will provide transparent encryption of the auto-saving features this plug-in provides. ## EXAMPLES: ### localStorage examples: The localStorage option within HTML5 allows for persistent client storage of key/value pairs. This is the default method of client storage. #### Default usage using HTML5 localStorage The default use is simple and users persistent storage by implementing the HTML5 localStorage option ```javascript $('#form').handleStorage(); ``` #### Default usage using HTML5 localStorage with custom appID By specifying the appID variable you can separate multiple forms as the default use will combine all forms into sub-objects of the default appID ```javascript $('#form').handleStorage({appID:'myWickedApp'}); ``` #### Default usage using HTML5 localStorage with custom auto-save interval You have the option of specifying the interval of the auto-save feature. Currently the default is 5 seconds. In this example we specify 30 seconds. ```javascript $('#form').handleStorage({interval:30000}); ``` #### Default usage using HTML5 localStorage with AES encryption If you wish to use persistent storage and provide some additional security to the saved form data a transparent AES-CBC encryption method is available. This option does require the Gibberish-AES plug-in as noted above. ```javascript $('#form').handleStorage({aes:true}); ``` ### sessionStorage examples: Specifying the sessionStorage option allows for client storage of form data ONLY while the users browser is open. This is the more secure option in terms of a web application which requires authentication. #### Default usage using HTML5 sessionStorage An example of using the sessionStorage HTML5 option ```javascript $('#form').handleStorage({storage:'sessionStorage'}); ``` #### Default usage using HTML5 sessionStorage with custom appID Here is an example of specifying the sessionStorage option with a custom appID for client storage. ```javascript $('#form').handleStorage({storage:'sessionStorage',appID:'myWickedApp'}); ``` #### Default usage using HTML5 sessionStorage with custom auto-save interval You have the option of specifying the interval of the auto-save feature. Currently the default is 5 seconds. In this example we specify 30 seconds. ```javascript $('#form').handleStorage({storage:'sessionStorage',interval:30000}); ``` #### Default usage using HTML5 sessionStorage with AES encryption This example provides the best security of client storage data as the client closes their browser the data gets reset and while the users browser is open the data is encrypted with the AES-CBC cipher ```javascript $('#form').handleStorage({storage:'sessionStorage',aes:true}); ``` ### cookie storage examples: #### Default usage using cookies for client storage For those users that are still using older browsers option cookie storage is available but requires the jquery cookie plugin (see above for URL) ```javascript $('#form').handleStorage({storage:'cookies'}); ``` #### Default usage using cookies for client storage with custom appID An example using cookies with a custom appID (good for multiple forms if you wish to segregate the storage objects) ```javascript $('#form').handleStorage({storage:'cookies',appID:'myWickedApp'}); ``` #### Default usage using cookies with custom auto-save interval You have the option of specifying the interval of the auto-save feature. Currently the default is 5 seconds. In this example we specify 30 seconds. ```javascript $('#form').handleStorage({storage:'cookies',interval:30000}); ``` #### Default usage using cookies for client storage with AES encryption An example using AES-CBC encryption with degraded cookie support. ```javascript $('#form').handleStorage({storage:'cookies',aes:true}); ``` ### Using callback options Because responsive UI's are all the rage I have added a couple of callback options to help you provide this to your clients. #### Pre-Callback example Here is an example of executing a function before the auto-incrementing or form submit event has been called. ```javascript $('#form').handleStorage({preCallback:function(){ console.log(this); }}); ``` #### Callback example This callback gets executed anytime the save has been called and was successful. Keep in mind that this does take place ever 5 seconds with a default configuration. ```javascript $('#form').handleStorage({callback:function(){ console.log(this); }}); ``` #### errCallback example This callback gets executed anytime a save was unsuccessful. ```javascript $('#form').handleStorage({errCallback:function(){ console.log(this); }}); ``` ## OBJECT DETAILS Here is an example of the contents of the object within any specified storage mechanism. As you can see it is a valid JSON object that is formatted for readability. Multiple forms can be stored within one object as shown here. (Which is the default method of storing form data). ``` "jQuery.handleStorage": { "default": { "uuid": "cb76ax8d-6539-4151-a70d-ed0628c083d5", "name": "jason gerfen", "email": "jason.gerfen@gmail.com", "message": "Test #1" }, "default-aes": { "uuid": "cb76ax8d-6539-4151-a70d-ed0628c083d5", "name": "U2FsdGVkX1+J6IKgOD4E/Ni/VqnNf/FwZwaHotk4Gfc=", "email": "U2FsdGVkX19xzInZdszNewMDlKOVZzDraUkhT2VCjtIfqgaZNYhzkKWUciUn0lCc", "message": "U2FsdGVkX1+s0SczDn9TOP9FSpBvJCqVpbL9wyniQcs=" } } ``` Or if you would like to separate objects based on forms (done by specifying a separate 'appID' per form), this is what it would look like in the storage mechanism. ``` "jQuery.handleStorage": { "default": { "uuid": "cb76ax8d-6539-4151-a70d-ed0628c083d5", "name": "jason gerfen", "email": "jason.gerfen@gmail.com", "message": "Test #1" } } "myWickedApp": { "default-aes": { "uuid": "cb76ax8d-6539-4151-a70d-ed0628c083d5", "name": "U2FsdGVkX1+J6IKgOD4E/Ni/VqnNf/FwZwaHotk4Gfc=", "email": "U2FsdGVkX19xzInZdszNewMDlKOVZzDraUkhT2VCjtIfqgaZNYhzkKWUciUn0lCc", "message": "U2FsdGVkX1+s0SczDn9TOP9FSpBvJCqVpbL9wyniQcs=" } } ``` Jason Gerfen - Licensed under the GNU Public License or GPL