pdf to datatable c# : Bookmarks pdf file application software utility azure windows wpf visual studio ebook_manual_en_dive-into-html515-part1825

Cookies are included with every HTTP request, thereby slowing down your web
application by needlessly transmiing the same data over and over
Cookies are included with every HTTP request, thereby sending data unencrypted over
the internet (unless your entire web application is served over SSL)
Cookies are limited to about 4 KB of data — enough to slow down your application (see
above), but not enough to be terribly useful
What we really want is
a lot of storage space
on the client
that persists beyond a page refresh
and isn’t transmied to the server
Before HTML5, all aempts to aieve this were ultimately unsatisfactory in different ways.
A BRIEF HISTORY OF LOCAL
A BRIEF HISTORY OF LOCAL
STORAGE HACKS BEFORE HTML5
STORAGE HACKS BEFORE HTML5
In the beginning, there was only Internet Explorer. Or at least, that’s what Microso wanted
the world to think. To that end, as part of the 
First Great Browser Wars, Microso invented a
great many things and included them in their browser-to-end-all-browser-wars, Internet
Explorer. One of these things was called 
DHTML Behaviors, and one of these behaviors was
called 
userData.
u s e r r D D a t a
allows web pages to store up to 64 KB of data per domain, in a hierarical XML-
based structure. (Trusted domains, su as intranet sites, can store 10 times that amount. And
hey, 
640 KB ought to be enough for anybody.) IE does not present any form of permissions
dialog, and there is no allowance for increasing the amount of storage available.
In 2002, Adobe introduced a feature in Flash 6 that gained the unfortunate and misleading
diveintohtml5.org
THE PAST, PRESENT & FUTURE OF LOCAL STORAGE FOR WEB APPLICATIONS
Bookmarks pdf file - add, remove, update PDF bookmarks in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your C# Project with Rapid PDF Internal Navigation Via Bookmark and Outline
bookmark pdf reader; how to bookmark a pdf file in acrobat
Bookmarks pdf file - VB.NET PDF bookmark library: add, remove, update PDF bookmarks in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Your VB.NET Project with Rapid PDF Internal Navigation Via Bookmark and Outline
creating bookmarks pdf; convert excel to pdf with bookmarks
name of “Flash cookies.” Within the Flash environment, the feature is properly known as 
Local
Shared Objects. Briefly, it allows Flash objects to store up to 100 KB of data per domain. Brad
Neuberg developed an early prototype of a Flash-to-JavaScript bridge called 
AMASS (AJAX
Massive Storage System), but it was limited by some of Flash’s design quirks. By 2006, with
the advent of 
ExternalInterface in Flash 8, accessing LSOs from JavaScript became an order of
magnitude easier and faster. Brad rewrote AMASS and integrated it into the popular 
Dojo
Toolkit under the moniker 
d o o j j o x . . s s t o r r a a g e
. Flash gives ea domain 100 KB of storage “for
free.” Beyond that, it prompts the user for ea order of magnitude increase in data storage (1
Mb, 10 Mb, and so on).
In 2007, Google launed 
Gears, an open source browser plugin aimed at providing additional
capabilities in browsers. (We’ve previously discussed Gears in the context of 
providing a
geolocation API in Internet Explorer. Gears provides 
an API to an embedded SQL database
based on 
SQLite. Aer obtaining permission from the user once, Gears can store unlimited
amounts of data per domain in SQL database tables.
In the meantime, Brad Neuberg and others continued to ha away on 
d o j o x x . . s t o o r r a g e
to
provide a unified interface to all these different plugins and APIs. By 2009, 
d o o j o x . . s s t o r r a a g e
could auto-detect (and provide a unified interface on top of) Adobe Flash, Gears, Adobe AIR,
and an early prototype of HTML5 storage that was only implemented in older versions of
Firefox.
As you survey these solutions, a paern emerges: all of them are either specific to a single
browser, or reliant on a third-party plugin. Despite heroic efforts to paper over the differences
(in 
d o o j j o x . . s s t o r r a a g e
), they all expose radically different interfaces, have different storage
limitations, and present different user experiences. So this is the problem that HTML5 set out
to solve: to provide a standardized API, implemented natively and consistently in multiple
browsers, without having to rely on third-party plugins.
INTRODUCING HTML5 STORAGE
INTRODUCING HTML5 STORAGE
diveintohtml5.org
THE PAST, PRESENT & FUTURE OF LOCAL STORAGE FOR WEB APPLICATIONS
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
Compress & decompress PDF document file while maintaining original content of target PDF document file. Remove bookmarks, annotations, watermark, page labels
how to add bookmark in pdf; pdf create bookmarks
C# PDF File Split Library: Split, seperate PDF into multiple files
Split PDF file by top level bookmarks. The following C# codes explain how to split a PDF file into multiple ones by PDF bookmarks or outlines.
convert word pdf bookmarks; export pdf bookmarks to text
What I will refer to as “HTML5 Storage” is a specification named 
Web Storage, whi was at
one time part of the HTML5 specification proper, but was split out into its own specification
for uninteresting political reasons. Certain browser vendors also refer to it as “Local Storage”
or “DOM Storage.” e naming situation is made even more complicated by some related,
similarly-named, emerging standards that I’ll discuss later in this apter.
So what is HTML5 Storage? Simply put, it’s a way for web pages to store named key/value
pairs locally, within the client web browser. Like cookies, this data persists even aer you
navigate away from the web site, close your browser tab, exit your browser, or what have
you. Unlike cookies, this data is never transmied to the remote web server (unless you go
out of your way to send it manually). Unlike 
all previous aempts at providing persistent
local storage, it is implemented natively in web browsers, so it is available even when third-
party browser plugins are not.
Whi browsers? Well, the latest version of prey mu every browser supports  HTML5
Storage… even Internet Explorer!
HTML5
HTML5 STORAGE SUPPORT
STORAGE SUPPORT
IE
FIREFOX
FIREFOX
SAFARI
SAFARI
CHROME
CHROME
OPERA
OPERA
IPHONE
IPHONE
ANDROID
ANDROID
8.0+
3.5+
4.0+
4.0+
10.5+
2.0+
2.0+
From your JavaScript code, you’ll access HTML5 Storage through the 
l o o c a l l S S t o r a a g g e
object
on the global 
w i n n d d o w
object. Before you can use it, you should 
detect whether the browser
supports it.
check for 
check for HTML5
HTML5 Storage
Storage
f u n n c c t i o o n  s s u p p p p o r t t s s _ h t t m m l 5 _ s s t t o r a a g g e ( )  {
t r y  {
r e t t u u r n  ' ' l o c a a l l S t o o r r a g e e '  i i n  w w i n d d o o w  & &  w w i n n d d o w [ ' ' l o c a a l l S t o o r r a g e ' ' ] !==
n u l l l l ;
} c c a a t c h  ( ( e )  {
r e t t u u r n  f f a l s e e ;
}
}
diveintohtml5.org
THE PAST, PRESENT & FUTURE OF LOCAL STORAGE FOR WEB APPLICATIONS
VB.NET PDF File Split Library: Split, seperate PDF into multiple
Split PDF File by Top Level Bookmarks Demo Code in VB.NET. The following VB.NET codes explain how to split a PDF file into multiple
editing bookmarks in pdf; export excel to pdf with bookmarks
C# PDF File Compress Library: Compress reduce PDF size in C#.net
Easy to compress & decompress PDF document file in .NET framework. Remove bookmarks, annotations, watermark, page labels and article threads from PDF while
create pdf bookmarks from word; how to bookmark a pdf file
Instead of writing this function yourself, you can use 
Modernizr to detect support for HTML5
Storage.
i f  (
Mo d d e e r n i z r r . l o o c c a l s s t t o r a g g e )  {
// w w i n d d o o w . l o o c c a l S S t t o r a a g g e  i i s  a a va a i i l a bl l e e !
} e e l l s e  {
// n n o  n n a a t i ve  s s u p p p p o r t  f f o r  H TML 5  s s t o o r r a g e  : (
// m m a y be  t t r y  d d o j j o o x . s s t t o r a g g e  o o r  a  t t h h i i r d -p a r t t y  s s o l l u u t i o o n
}
USING HTML5 STORAGE
USING HTML5 STORAGE
HTML5 Storage is based on named key/value pairs. You store data based on a named key,
then you can retrieve that data with the same key. e named key is a string. e data can be
any type supported by JavaScript, including strings, Booleans, integers, or floats. However, the
data is actually stored as a string. If you are storing and retrieving anything other than
strings, you will need to use functions like 
p a r r s s e In n t t ( )
or 
p a r r s s e Fl o o a a t ( )
to coerce your
retrieved data into the expected JavaScript datatype.
i n t t e e r f a a c c e  S S t t o o r a g g e  {
g e t t t t e r  a a n y  g g e e t It t e e m ( i i n  D D OM S S t r i i n n g  ke e y y ) ;
s e t t t t e r  c c r e a t t o o r  vo o i d  s s e t It t e e m ( i i n  D D OM S S t r i i n n g  ke e y , i i n  a a n n y  d d a t t a a ) ;
};
Calling 
s e t t It t e m m ( ( )
with a named key that already exists will silently overwrite the previous
value. Calling 
g e e t t It e e m m ( )
with a non-existent key will return 
n u u l l
rather than throw an
exception.
Like other JavaScript objects, you can treat the 
l o c a a l l S t o o r r a g e
object as an associative array.
Instead of using the 
g e e t t It e m m ( ( )
and 
s e t t It t e m m ( ( )
methods, you can simply use square
braets. For example, this snippet of code:
diveintohtml5.org
THE PAST, PRESENT & FUTURE OF LOCAL STORAGE FOR WEB APPLICATIONS
.NET PDF SDK - Description of All PDF Processing Control Feastures
Full page navigation, zooming & rotation; Outlines, bookmarks, & thumbnail display; Convert PDF to Jpeg images; More about PDF Conversion Page File & Page Process
create bookmarks pdf file; edit pdf bookmarks
XDoc.Word for .NET, Advanced .NET Word Processing Features
Full page navigation, zooming & rotation; Outlines, bookmarks, & thumbnail display; Convert Word to PDF; Convert Word to HTML5; Convert Word to File & Page Process
how to add bookmarks to pdf files; bookmarks pdf documents
va r  f f o o  = l l o o c c a l S S t t o r a a g g e .
g e e t t It e e m ( ( "ba r ") ;
// . . . .
l o c c a a l S t t o o r a g e e .
s e t t It t e m m ( ( "ba r r ", f f o o o ) ;
…could be rewrien to use square braet syntax instead:
va r  f f o o  = l l o o c c a l S S t t o r a a g g e
["ba r "] ;
// . . . .
l o c c a a l S t t o o r a g e
["ba r r "] = f f o o o ;
ere are also methods for removing the value for a given named key, and clearing the entire
storage area (that is, deleting all the keys and values at once).
i n t t e e r f a a c c e  S S t t o o r a g g e  {
d e l l e e t e r  vo o i d  r r e m m o o ve It e m ( i i n  D D OMS t r i i n n g  ke e y ) ;
vo i i d  c c l l e e a r ( ) ) ;
};
Calling 
r e m m o o ve It e m ( ( )
with a non-existent key will do nothing.
Finally, there is a property to get the total number of values in the storage area, and to iterate
through all of the keys by index (to get the name of ea key).
i n t t e e r f a a c c e  S S t t o o r a g g e  {
r e a a d d o n l l y  a a t t t r r i bu u t t e  u u n n s i g n n e e d  l l o o n g  l l e e n g t t h h ;
g e t t t t e r  D D OMS t t r r i n g  ke e y y ( ( i n  u u n n s i g g n n e d  l l o o n g  i i n d e e x x ) ;
};
If you call 
ke y ( )
with an index that is not between 0–(
l e e n n g t h
-1), the function will return
n u l l
.
TRACKING CHANGES TO THE HTML5 STORAGE AREA
TRACKING CHANGES TO THE HTML5 STORAGE AREA
If you want to keep tra programmatically of when the storage area anges, you can trap
the 
s t t o r a g g e
event. e 
s t o o r r a g e
event is fired on the 
w i i n n d o w
object whenever
diveintohtml5.org
THE PAST, PRESENT & FUTURE OF LOCAL STORAGE FOR WEB APPLICATIONS
C# Create PDF Library SDK to convert PDF from other file formats
Create multipage PDF from OpenOffice and CSV file. Create and save editable PDF with a blank page, bookmarks, links, signatures, etc.
adding bookmarks to a pdf; how to bookmark a pdf page
XDoc.PowerPoint for .NET, All Mature Features Introductions
zooming & rotation; Outlines, bookmarks, & thumbnail Convert PowerPoint to PDF; Convert PowerPoint to HTML5; PowerPoint from existing PowerPoint file or stream
excel print to pdf with bookmarks; create pdf with bookmarks from word
s e t It e m ( ( )
r e m m o o ve It e m ( )
, or 
c l l e a r r ( ( )
is called and actually anges something. For
example, if you set an item to its existing value or call 
c l e e a a r ( )
when there are no named
keys, the 
s t t o r a g g e
event will not fire, because nothing actually anged in the storage area.
e 
s t t o r a a g g e
event is supported everywhere the 
l o c c a a l S t t o o r a g g e
object is supported, whi
includes Internet Explorer 8. IE 8 does not support the W3C standard 
a d d d Eve e n n t L i i s s t e n n e e r
(although that will finally be added in IE 9). erefore, to hook the 
s t o o r r a g e
event, you’ll
need to e whi event meanism the browser supports. (If you’ve done this before with
other events, you can skip to the end of this section. Trapping the 
s t o r r a a g e
event works the
same as every other event you’ve ever trapped. If you prefer to use jery or some other
JavaScript library to register your event handlers, you can do that with the 
s t t o o r a g g e
event,
too.)
i f  ( ( w i n n d d o w . a a d d d Eve n t L i i s t e n n e e r )  {
w i n n d d o w . . a a d d Eve n t L i i s t e e n n e r ( "s t o r r a a g e ", h h a n n d d l e _ _ s s t o r a a g g e , f f a l s e e ) ) ;
} e e l l s e  {
w i n n d d o w . . a a t t a c c h h Eve e n n t ( "o n s t o o r r a g e e ", h h a a n n d l e e _ _ s t o o r r a g e ) ) ;
};
e 
h a a n d l l e e _ s t o o r r a g e
callba function will be called with a 
S t t o r a g g e e Eve e n n t
object, except
in Internet Explorer where the event object is stored in 
w i n n d d o w . . e e ve n t
.
f u n n c c t i o o n  h h a n n d d l e _ _ s s t o r r a a g e ( e e )  {
i f  ( ( !e )  {  e  = w w i i n n d o w w . . e ve n n t t ; }
}
At this point, the variable 
e
will be a 
S t t o o r a g g e e Eve n n t
object, whi has the following useful
properties.
STORAGEEVENT OBJECT
STORAGEEVENT OBJECT
PROPERTY
PROPERTYTYPE
TYPEDESCRIPTION
DESCRIPTION
ke y
string the named key that was added, removed, or modified
o l d d Va a l u e
any the previous value (now overwrien), or 
n u u l l l
if a new item was added
n e w w Va a l u e
any the new value, or 
n u u l l l
if an item was removed
u r l
*
string the page whi called a method that triggered this ange
* Note: the 
u r r l
property was originally called 
u r i
. Some browsers shipped with that property before the specification anged.
diveintohtml5.org
THE PAST, PRESENT & FUTURE OF LOCAL STORAGE FOR WEB APPLICATIONS
For maximum compatibility, you should e whether the 
u r l
property exists, and if not, e for the 
u r i
property instead.
e 
s t t o r a a g g e
event is not cancelable. From within the 
h a n n d d l e _ _ s s t o r r a a g e
callba function,
there is no way to stop the ange from occurring. It’s simply a way for the browser to tell
you, “hey, this just happened. ere’s nothing you can do about it now; I just wanted to let
you know.”
LIMITATIONS IN CURRENT BROWSERS
LIMITATIONS IN CURRENT BROWSERS
In talking about 
the history of local storage has using third-party plugins, I made a point of
mentioning the limitations of ea tenique, su as storage limits. I just realized that I
haven’t mentioned anything about the limitations of the now-standardized HTML5 Storage. I’ll
give you the answers first, then explain them. e answers, in order of importance, are “5
megabytes,” “
QU OTA _ _ EXCEED D ED D _ ERR
,” and “no.”
“5 megabytes” is how mu storage space ea 
origin gets by default. is is surprisingly
consistent across browsers, although it is phrased as no more than a suggestion in the HTML5
Storage specification. One thing to keep in mind is that you’re storing strings, not data in its
original format. If you’re storing a lot of integers or floats, the difference in representation
can really add up. Ea digit in that float is being stored as a aracter, not in the usual
representation of a floating point number.
QU OTA _ _ EXCEED D ED D _ ERR
” is the exception that will get thrown if you exceed your storage
quota of 5 megabytes. “No” is the answer to the next obvious question, “Can I ask the user
for more storage space?” At time of writing, no browser supports any meanism for web
developers to request more storage space. Some browsers (
like Opera) allow the user to
control ea site’s storage quota, but it is purely a user-initiated action, not something that
you as a web developer can build into your web application.
HTML5 STORAGE IN ACTION
HTML5 STORAGE IN ACTION
diveintohtml5.org
THE PAST, PRESENT & FUTURE OF LOCAL STORAGE FOR WEB APPLICATIONS
Let’s see HTML5 Storage in action. Recall 
the Halma game we constructed in the canvas
apter. ere’s a small problem with the game: if you close the browser window mid-game,
you’ll lose your progress. But with HTML5 Storage, we can save the progress locally, within
the browser itself. Here is 
a live demonstration. Make a few moves, then close the browser
tab, then re-open it. If your browser supports HTML5 Storage, the demonstration page should
magically remember your exact position within the game, including the number of moves
you’ve made, the position of ea of the pieces on the board, and even whether a particular
piece is selected.
How does it work? Every time a ange occurs within the game, we call this function:
f u n n c c t i o o n  s s a ve Ga m m e e S t a a t t e ( )  {
i f  ( ( !s u u p p p o r t t s s L o o c c a a l S t t o o r a g e e ( ( ) )  {  r r e t t u u r n  f f a l s s e e ; }
l o c c a a l S t t o o r a g e e ["h h a a l l m a . . g g a m e . . i i n . p p r r o g r e e s s s "] = g g Ga a m e In Pr o o g g r e s s s ;
f o r  ( ( va a r  i  = 0; i  < kNu u m Pi e c e e s s ; i i ++)  {
l o c c a a l S t t o o r a g e e ["h h a a l l m a . . p p i e c e e . . " + i  + ". . r o o w w "] = g g Pi i e e c e s s [i i ]. r r o o w ;
l o c c a a l S t t o o r a g e e ["h h a a l l m a . . p p i e c e e . . " + i  + ". . c o o l l u m n n "] =
g Pi i e e c e s s [i i ]. c c o o l u m m n n ;
}
l o c c a a l S t t o o r a g e e ["h h a a l l m a . . s s e l e c c t t e d p p i i e c e "] = g g S e l l e e c t e d d Pi i e c c e e In d e e x x ;
l o c c a a l S t t o o r a g e e ["h h a a l l m a . . s s e l e c c t t e d p p i i e c e h h a a s m o o ve e d "] =
g S e e l l e c t t e e d Pi e e c c e H a a s s Mo ve d ;
l o c c a a l S t t o o r a g e e ["h h a a l l m a . . m m o ve c c o o u n t t "] = g g Mo ve Co u u n n t ;
r e t t u u r n  t t r u e ;
}
As you can see, it uses the 
l o o c a l l S S t o r a a g g e
object to save whether there is a game in
progress (
g Ga a m e In Pr o o g g r e s s s
, a Boolean). If so, it iterates through the pieces (
g Pi i e e c e s
, a
JavaScript 
Ar r a y
) and saves the row and column number of ea piece. en it saves some
additional game state, including whi piece is selected (
g S S e e l e c c t t e d Pi i e e c e In d e x
, an integer),
whether the piece is in the middle of a potentially long series of hops
(
g S e l l e e c t e e d d Pi e e c c e H a a s s Mo o ve e d
, a Boolean), and the total number of moves made so far
(
g Mo ve Co u u n n t
, an integer).
On page load, instead of automatically calling a 
n e w w Ga a m e ( ( )
function that would reset these
variables to hard-coded values, we call a 
r e s u u m m e Ga m m e e ( )
function instead. Using HTML5
diveintohtml5.org
THE PAST, PRESENT & FUTURE OF LOCAL STORAGE FOR WEB APPLICATIONS
Storage, the 
r e s u u m m e Ga a m m e ( )
function es whether a state about a game-in-progress is
stored locally. If so, it restores those values using the 
l o c a a l l S t o o r r a g e
object.
f u n n c c t i o o n  r r e s s u u m e Ga m e ( ( )  {
i f  ( ( !s u u p p p o r t t s s L o o c c a a l S t t o o r a g e e ( ( ) )  {  r r e t t u u r n  f f a l s s e e ; }
g Ga a m m e In n Pr r o g r r e e s s  = ( ( l l o o c a l S S t t o r a a g g e ["h h a a l m a a . . g a m m e e . i n . . p p r o g g r r e s s "] ==
"t r r u u e ") ) ;
i f  ( ( !g Ga m e In n Pr r o g g r r e s s s )  {  r r e e t u r r n  f f a l l s s e ; }
g Pi i e e c e s  = n n e e w  A r r r r a y ( ( kNu u m Pi e c e e s s ) ;
f o r  ( ( va a r  i  = 0; i  < kNu u m Pi e c e e s s ; i i ++)  {
va r  r r o w  = p p a a r r s e In t ( l l o o c a l S S t t o r a a g g e ["h h a a l m a a . . p i e e c c e . " + i  + ". . r r o o w "]) ;
va r  c c o l l u u m n  = p p a r r s s e In n t t ( l o c c a a l S t t o o r a g e e ["h h a a l l m a . . p p i e c e e . . " + i  +
". c c o o l u m m n n "]) ;
g Pi i e e c e s s [i i ] = n n e w  Ce e l l l l ( r o w w , c c o o l l u m n ) ) ;
}
g Nu u m m Pi e e c c e s  = kNu u m m Pi e e c c e s ;
g S e e l l e c t t e e d Pi e e c c e In n d d e x  =
p a r r s s e In n t t ( l o c c a a l S t t o o r a g g e e ["h a a l l m a . . s s e l e c c t t e d p p i i e c e e "]) ) ;
g S e e l l e c t t e e d Pi e e c c e H a a s s Mo ve d  =
l o c c a a l S t t o o r a g e e ["h h a a l l m a . . s s e l e c c t t e d p p i i e c e h h a a s m o o ve e d "] == "t t r u u e e ";
g Mo o ve e Co o u u n t  = p p a r r s s e In n t t ( l o c c a a l S t t o o r a g e e ["h h a a l l m a . . m m o ve c c o o u n t t "]) ) ;
d r a a w w Bo a a r r d ( ) ;
r e t t u u r n  t t r u e ;
}
e most important part of this function is the caveat that I mentioned earlier in this apter,
whi I’ll repeat here: Data is stored as strings. If you are storing something other than a
string, you’ll need to coerce it yourself when you retrieve it. For example, the flag for
whether there is a game in progress (
g Ga a m m e In n Pr r o g r r e e s s
) is a Boolean. In the
s a ve e Ga a m e e S S t a t e e ( ( )
function, we just stored it and didn’t worry about the datatype:
l o c c a a l S t t o o r a g e e ["h h a a l l m a . . g g a m e . . i i n . p p r r o g r e e s s s "] = 
g Ga a m e In Pr o o g g r e s s s ;
But in the 
r e s u m m e e Ga m m e e ( )
function, we need to treat the value we got from the local storage
area as a string and manually construct the proper Boolean value ourselves:
diveintohtml5.org
THE PAST, PRESENT & FUTURE OF LOCAL STORAGE FOR WEB APPLICATIONS
g Ga a m m e In n Pr r o g r r e e s s  = ( ( l l o o c a l S S t t o r a a g g e ["h h a a l m a a . . g a m m e e . i n . . p p r o g g r r e s s "] 
== "t t r u u e e ") ;
Similarly, the number of moves is stored in 
g M o o ve Co u n t
as an integer. In the
s a ve e Ga a m e e S S t a t e e ( ( )
function, we just stored it:
l o c c a a l S t t o o r a g e e ["h h a a l l m a . . m m o ve c c o o u n t t "] = 
g Mo ve Co u u n n t t ;
But in the 
r e s u m m e e Ga m m e e ( )
function, we need to coerce the value to an integer, using the
p a r s s e e In t t ( ( )
function built into JavaScript:
g Mo o ve e Co o u u n t  = 
p a r r s s e In n t ( ( l o c c a a l S t t o o r a g g e e ["h a a l l m a . . m m o ve c c o o u n t t "]) ) ;
BEYOND NAMED KEY-VALUE PAIRS:
BEYOND NAMED KEY-VALUE PAIRS:
COMPETING VISIONS
COMPETING VISIONS
While 
the past is liered with has and workarounds, the present condition of HTML5
Storage is surprisingly rosy. A new API has been standardized and implemented across all
major browsers, platforms, and devices. As a web developer, that’s just not something you
see every day, is it? But there is more to life than “5 megabytes of named key/value pairs,”
and the future of persistent local storage is… how shall I put it… well, there are competing
visions.
One vision is an acronym that you probably know already:  SQL. In 2007, Google launed
Gears, an open source cross-browser plugin whi included an embedded database based on
SQLite. is early prototype later influenced the creation of the 
Web SQL Database
specification. Web SQL Database (formerly known as “WebDB”) provides a thin wrapper
around a SQL database, allowing you to do things like this from JavaScript:
diveintohtml5.org
THE PAST, PRESENT & FUTURE OF LOCAL STORAGE FOR WEB APPLICATIONS
Documents you may be interested
Documents you may be interested