如何申请增加iPad上的HTML5本地存储大小,就像FT网络应用程序一样?

Fra*_*coR 31 javascript html5 mobile-website local-storage ios

如果您打开http://app.ft.com(金融时报移动网络应用程序),系统会提示您将应用程序添加到"主页".

执行此操作后,当您打开应用程序时,系统会再次提示您允许localstoreage数据库大小增加到50MB.

  • 如何才能做到这一点?是否有一些JavaScript API调用?权限还是其他什么?
  • 这个iPad(iOS?)是特定的,还是可以在其他Webkit浏览器上运行?

Row*_*wan 37

我碰巧知道这件事;)

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

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

openDatabase('databaseName', '1.0', 'My Database', 50*1024*1024, …
Run Code Online (Sandbox Code Playgroud)

......要求50MB的空间.

但是,当用户首次访问该网站时,您可能不希望一次提示他们约50MB的限制; 所以你可能会认为你可以先要求5MB,然后再用50MB重新打开它?不幸的是,这不起作用 - 第二次打开尝试,数量增加,无声地成功,没有提示大小增加,实际上没有增加可用的大小.

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

如果用户选择允许存储更多内容,则应用程序会尝试打开具有40MB空间的不同名称的数据库(系统会提示用户批准50MB).这允许该数据库中的40MB,以及原始预览数据库中的5MB,因此在插入行时都不会失败 - 因为目前总共50MB是iOS的限制.

目前所有浏览器都以不同方式处理数据库空间限制,因此如果您计划跨平台,请仔细测试.桌面Safari可以很好地处理它,允许更大; Chrome根本不允许任何增加; 等等所有"HTML5"实现都以奇怪的方式有所不同:)


Bla*_*rog 7

此数据库是Web SQL Database 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);
    });
}
Run Code Online (Sandbox Code Playgroud)

在HTML5上引入Web SQL数据库 Doctor提供了一个关于所有这些工作原理的快速教程.

  • Web SQL已经死了吗?您链接的页面显示*"请注意,自11月18日起,W3C不再积极致力于Web SQL数据库规范"* (2认同)
  • 这个答案是在2011年发布的:P,所以不要期望保持真实 (2认同)