Loading Client-Side Data Storage for Web Developers - Working Files/Chapter 1/No Work Files.rtf 0 → 100755 +7 −0 Changes for Client-Side Data Storage for Web Developers - Working Files/Chapter 1/No Work Files.rtf: 7 added lines, 0 removed lines. Original line number Diff line number Diff line {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \margl1440\margr1440\vieww9000\viewh8400\viewkind0 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural \f0\fs24 \cf0 No work files for this lesson...} No newline at end of file Client-Side Data Storage for Web Developers - Working Files/Chapter 2/cookies.js 0 → 100755 +65 −0 Changes for Client-Side Data Storage for Web Developers - Working Files/Chapter 2/cookies.js: 65 added lines, 0 removed lines. Original line number Diff line number Diff line // Credit: Mozilla Developer Network - https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie /*\ |*| |*| :: cookies.js :: |*| |*| A complete cookies reader/writer framework with full unicode support. |*| |*| Revision #1 - September 4, 2014 |*| |*| https://developer.mozilla.org/en-US/docs/Web/API/document.cookie |*| https://developer.mozilla.org/User:fusionchess |*| |*| This framework is released under the GNU Public License, version 3 or later. |*| http://www.gnu.org/licenses/gpl-3.0-standalone.html |*| |*| Syntaxes: |*| |*| * docCookies.setItem(name, value[, end[, path[, domain[, secure]]]]) |*| * docCookies.getItem(name) |*| * docCookies.removeItem(name[, path[, domain]]) |*| * docCookies.hasItem(name) |*| * docCookies.keys() |*| \*/ var docCookies = { getItem: function (sKey) { if (!sKey) { return null; } return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null; }, setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) { if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return false; } var sExpires = ""; if (vEnd) { switch (vEnd.constructor) { case Number: sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd; break; case String: sExpires = "; expires=" + vEnd; break; case Date: sExpires = "; expires=" + vEnd.toUTCString(); break; } } document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "") + (bSecure ? "; secure" : ""); return true; }, removeItem: function (sKey, sPath, sDomain) { if (!this.hasItem(sKey)) { return false; } document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : ""); return true; }, hasItem: function (sKey) { if (!sKey) { return false; } return (new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie); }, keys: function () { var aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/); for (var nLen = aKeys.length, nIdx = 0; nIdx < nLen; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); } return aKeys; } }; No newline at end of file Client-Side Data Storage for Web Developers - Working Files/Chapter 2/test1.html 0 → 100755 +38 −0 Changes for Client-Side Data Storage for Web Developers - Working Files/Chapter 2/test1.html: 38 added lines, 0 removed lines. Original line number Diff line number Diff line <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Cookie Test One</title> <meta name="description" content=""> <meta name="viewport" content="width=device-width"> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <script type="text/javascript" src="cookies.js"></script> </head> <body> <div id="resultDiv"></div> <script> $(document).ready(function() { //initial value var visited = 0; //Check to see if we have the cookie... if(docCookies.hasItem("visited")) { //and get it visited = docCookies.getItem("visited"); } visited++; //update docCookies.setItem("visited", visited); $("#resultDiv").text("You have visited this site "+ visited + " times."); }); </script> </body> </html> Client-Side Data Storage for Web Developers - Working Files/Chapter 2/test2.html 0 → 100755 +38 −0 Changes for Client-Side Data Storage for Web Developers - Working Files/Chapter 2/test2.html: 38 added lines, 0 removed lines. Original line number Diff line number Diff line <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Cookie Test Two</title> <meta name="description" content=""> <meta name="viewport" content="width=device-width"> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <script type="text/javascript" src="cookies.js"></script> </head> <body> <div id="resultDiv"></div> <script> $(document).ready(function() { //initial value var visited = 0; //Check to see if we have the cookie... if(docCookies.hasItem("visited2")) { //and get it visited = docCookies.getItem("visited2"); } visited++; //update docCookies.setItem("visited2", visited, Infinity); $("#resultDiv").text("You have visited this site "+ visited + " times."); }); </script> </body> </html> Client-Side Data Storage for Web Developers - Working Files/Chapter 2/test3.html 0 → 100755 +52 −0 Changes for Client-Side Data Storage for Web Developers - Working Files/Chapter 2/test3.html: 52 added lines, 0 removed lines. Original line number Diff line number Diff line <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Cookie Test Three</title> <meta name="description" content=""> <meta name="viewport" content="width=device-width"> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <script type="text/javascript" src="cookies.js"></script> </head> <body> <div id="resultDiv"></div> <script> $(document).ready(function() { var $resultDiv = $("#resultDiv"); //Is this a brand new user? var newUser = true; //How many days since last visit var daysSinceLastVisit; //Check to see if we have the cookie... if(docCookies.hasItem("lastVisit")) { newUser = false; //do some math to find out how long it has been var lastVisit = docCookies.getItem("lastVisit"); var now = new Date(); var lastVisitDate = new Date(lastVisit); //credit: http://stackoverflow.com/a/3224854/52160 var timeDiff = Math.abs(now.getTime() - lastVisitDate.getTime()); var daysSinceLastVisit = Math.ceil(timeDiff / (1000 * 3600 * 24)); } //Set to now docCookies.setItem("lastVisit", new Date()); if(newUser) { $resultDiv.text("Welcome to the site!"); } else if(daysSinceLastVisit > 20) { $resultDiv.text("Welcome back to the site!"); } else { $resultDiv.text("Welcome good user!"); } }); </script> </body> </html> Loading
Client-Side Data Storage for Web Developers - Working Files/Chapter 1/No Work Files.rtf 0 → 100755 +7 −0 Changes for Client-Side Data Storage for Web Developers - Working Files/Chapter 1/No Work Files.rtf: 7 added lines, 0 removed lines. Original line number Diff line number Diff line {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf350 {\fonttbl\f0\fswiss\fcharset0 Helvetica;} {\colortbl;\red255\green255\blue255;} \margl1440\margr1440\vieww9000\viewh8400\viewkind0 \pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\ql\qnatural\pardirnatural \f0\fs24 \cf0 No work files for this lesson...} No newline at end of file
Client-Side Data Storage for Web Developers - Working Files/Chapter 2/cookies.js 0 → 100755 +65 −0 Changes for Client-Side Data Storage for Web Developers - Working Files/Chapter 2/cookies.js: 65 added lines, 0 removed lines. Original line number Diff line number Diff line // Credit: Mozilla Developer Network - https://developer.mozilla.org/en-US/docs/Web/API/Document/cookie /*\ |*| |*| :: cookies.js :: |*| |*| A complete cookies reader/writer framework with full unicode support. |*| |*| Revision #1 - September 4, 2014 |*| |*| https://developer.mozilla.org/en-US/docs/Web/API/document.cookie |*| https://developer.mozilla.org/User:fusionchess |*| |*| This framework is released under the GNU Public License, version 3 or later. |*| http://www.gnu.org/licenses/gpl-3.0-standalone.html |*| |*| Syntaxes: |*| |*| * docCookies.setItem(name, value[, end[, path[, domain[, secure]]]]) |*| * docCookies.getItem(name) |*| * docCookies.removeItem(name[, path[, domain]]) |*| * docCookies.hasItem(name) |*| * docCookies.keys() |*| \*/ var docCookies = { getItem: function (sKey) { if (!sKey) { return null; } return decodeURIComponent(document.cookie.replace(new RegExp("(?:(?:^|.*;)\\s*" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=\\s*([^;]*).*$)|^.*$"), "$1")) || null; }, setItem: function (sKey, sValue, vEnd, sPath, sDomain, bSecure) { if (!sKey || /^(?:expires|max\-age|path|domain|secure)$/i.test(sKey)) { return false; } var sExpires = ""; if (vEnd) { switch (vEnd.constructor) { case Number: sExpires = vEnd === Infinity ? "; expires=Fri, 31 Dec 9999 23:59:59 GMT" : "; max-age=" + vEnd; break; case String: sExpires = "; expires=" + vEnd; break; case Date: sExpires = "; expires=" + vEnd.toUTCString(); break; } } document.cookie = encodeURIComponent(sKey) + "=" + encodeURIComponent(sValue) + sExpires + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : "") + (bSecure ? "; secure" : ""); return true; }, removeItem: function (sKey, sPath, sDomain) { if (!this.hasItem(sKey)) { return false; } document.cookie = encodeURIComponent(sKey) + "=; expires=Thu, 01 Jan 1970 00:00:00 GMT" + (sDomain ? "; domain=" + sDomain : "") + (sPath ? "; path=" + sPath : ""); return true; }, hasItem: function (sKey) { if (!sKey) { return false; } return (new RegExp("(?:^|;\\s*)" + encodeURIComponent(sKey).replace(/[\-\.\+\*]/g, "\\$&") + "\\s*\\=")).test(document.cookie); }, keys: function () { var aKeys = document.cookie.replace(/((?:^|\s*;)[^\=]+)(?=;|$)|^\s*|\s*(?:\=[^;]*)?(?:\1|$)/g, "").split(/\s*(?:\=[^;]*)?;\s*/); for (var nLen = aKeys.length, nIdx = 0; nIdx < nLen; nIdx++) { aKeys[nIdx] = decodeURIComponent(aKeys[nIdx]); } return aKeys; } }; No newline at end of file
Client-Side Data Storage for Web Developers - Working Files/Chapter 2/test1.html 0 → 100755 +38 −0 Changes for Client-Side Data Storage for Web Developers - Working Files/Chapter 2/test1.html: 38 added lines, 0 removed lines. Original line number Diff line number Diff line <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Cookie Test One</title> <meta name="description" content=""> <meta name="viewport" content="width=device-width"> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <script type="text/javascript" src="cookies.js"></script> </head> <body> <div id="resultDiv"></div> <script> $(document).ready(function() { //initial value var visited = 0; //Check to see if we have the cookie... if(docCookies.hasItem("visited")) { //and get it visited = docCookies.getItem("visited"); } visited++; //update docCookies.setItem("visited", visited); $("#resultDiv").text("You have visited this site "+ visited + " times."); }); </script> </body> </html>
Client-Side Data Storage for Web Developers - Working Files/Chapter 2/test2.html 0 → 100755 +38 −0 Changes for Client-Side Data Storage for Web Developers - Working Files/Chapter 2/test2.html: 38 added lines, 0 removed lines. Original line number Diff line number Diff line <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Cookie Test Two</title> <meta name="description" content=""> <meta name="viewport" content="width=device-width"> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <script type="text/javascript" src="cookies.js"></script> </head> <body> <div id="resultDiv"></div> <script> $(document).ready(function() { //initial value var visited = 0; //Check to see if we have the cookie... if(docCookies.hasItem("visited2")) { //and get it visited = docCookies.getItem("visited2"); } visited++; //update docCookies.setItem("visited2", visited, Infinity); $("#resultDiv").text("You have visited this site "+ visited + " times."); }); </script> </body> </html>
Client-Side Data Storage for Web Developers - Working Files/Chapter 2/test3.html 0 → 100755 +52 −0 Changes for Client-Side Data Storage for Web Developers - Working Files/Chapter 2/test3.html: 52 added lines, 0 removed lines. Original line number Diff line number Diff line <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Cookie Test Three</title> <meta name="description" content=""> <meta name="viewport" content="width=device-width"> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script> <script type="text/javascript" src="cookies.js"></script> </head> <body> <div id="resultDiv"></div> <script> $(document).ready(function() { var $resultDiv = $("#resultDiv"); //Is this a brand new user? var newUser = true; //How many days since last visit var daysSinceLastVisit; //Check to see if we have the cookie... if(docCookies.hasItem("lastVisit")) { newUser = false; //do some math to find out how long it has been var lastVisit = docCookies.getItem("lastVisit"); var now = new Date(); var lastVisitDate = new Date(lastVisit); //credit: http://stackoverflow.com/a/3224854/52160 var timeDiff = Math.abs(now.getTime() - lastVisitDate.getTime()); var daysSinceLastVisit = Math.ceil(timeDiff / (1000 * 3600 * 24)); } //Set to now docCookies.setItem("lastVisit", new Date()); if(newUser) { $resultDiv.text("Welcome to the site!"); } else if(daysSinceLastVisit > 20) { $resultDiv.text("Welcome back to the site!"); } else { $resultDiv.text("Welcome good user!"); } }); </script> </body> </html>