我如何要求增加iPad上的HTML5本地存储大小,就像FT网页应用程序一样?

如果您打开http://app.ft.com (“金融时报”移动networking应用程序),系统会提示您将该应用程序添加到您的“家庭”中。

完成此操作后,当您打开应用程序时,系统会再次提示您允许本地存储数据库大小增加到50MB。

  • 如何才能做到这一点? 有一些JavaScript API调用? 权限或其他?
  • 这是iPad(iOS?)特定的,还是在其他Webkit浏览器上工作?

我碰巧知道这件事;)

没有API用于请求增加现有数据库的存储大小。 有一种强制增加的方法:将数据写入数据库的大小需要增加,提示用户。 但是,这将是缓慢的,没有办法告诉当前分配的空间,所以不build议。

黑蛙有一部分是正确的:唯一可行的方法是在打开时请求一个非常大的数据库,例如:

openDatabase('databaseName', '1.0', 'My Database', 50*1024*1024, … 

…要求50MB的空间。

但是,当用户第一次访问该网站时,您可能不希望立即提示他们有50MB的限制; 所以你可能会认为你最初可以要求5MB,然后用50MB重新开启? 不幸的是,这不起作用 – 第二次开放尝试,数量增加,默默成功,并没有提示增加规模,实际上并没有增加可用的规模。

因此,FT应用程序以一个5MB的“预览”数据库开始,这样在第一次加载时不会提示用户。 它试图不超过这个5MB的限制,因为任何分配的空间必须在所有数据库之间共享。

如果用户select允许存储更多的内容,则应用程序会尝试打开一个名称不同,数据库空间为40MB(为此用户提示批准50MB)的数据库。 这个数据库允许有40MB,原始预览数据库允许5MB,所以插入行时都不会失败,因为总共50MB是目前iOS上的限制。

目前所有的浏览器都处理数据库空间的限制,所以如果你计划跨平台的话,要仔细testing一下。 桌面Safari处理它很好,允许更大; Chrome不允许任何增加; 等等。所有的“HTML5”实现都会以奇怪的方式出现:)

这个数据库是Web SQL数据库 API的一部分,它不是HTML5的一部分。 使用下面的设置你的数据库的大小

 function prepareDatabase(ready, error) { return openDatabase('documents', '1.0', 'Offline document storage', 50*1024*1024, function (db) { db.changeVersion('', '1.0', function (t) { t.executeSql('CREATE TABLE docids (id, name)'); }, error); }); } 

在HTML5上引入Web SQL数据库 Doctor有一个非常快速的教程,介绍所有这些工作。

我刚刚在iPad 2(iOS 5.1.1)中使用我的离线应用程序进行了testing,我们不需要在应用程序内执行任何特定操作。 例如,我的应用程序有大约18 MB的离线数据。 当浏览器击中URL时,浏览器popup消息请求增加到25 MB,我接受了,一切正常。 谢谢

这是浏览器特定的。 大多数已经把它设置为5MB,有些人可以select通过设置某处来增加它。 不是所有的浏览器都提供这个。

呵呵 – 潜入HTML5说截至2011年2月没有浏览器支持 ,所以我猜这可能是一个iOS 4.3的东西? (iOS 4.3在2011年3月发货。)

我无法从Google快速find任何引用。 苹果自己的开发者文档可能会提到它 – 我不确定这是否可用于非SDK用户。