Я кое-что знаю об этом;)
Нет API для запроса увеличения размера хранилища для существующей базы данных.Существует один способ форсировать увеличение: записывать данные в базу данных в таком размере, который требует увеличения, запрашивая пользователя.Тем не менее, это будет медленно и , и нет способа узнать выделенное в данный момент пространство, поэтому это не рекомендуется.
Black Frog имеет часть этого правильного: единственный изящный способ сделать этозапрашивать очень большую базу данных при ее открытии, например:
openDatabase('databaseName', '1.0', 'My Database', 50*1024*1024, …
… запрашивать 50 МБ свободного места.
Однако, когда пользователь впервые посещает сайт, вы можете не захотетьсразу подсказать им около 50 МБ;так что вы можете подумать, что сначала можете запросить 5 МБ, а потом снова открыть его с 50 МБ?К сожалению, это не работает - вторая открытая попытка, с увеличенным количеством, завершается беззвучно, не требует увеличения размера и фактически не увеличивает доступный размер.
Поэтому приложение FT запускается с 5 МБ«Предварительный просмотр» базы данных, чтобы пользователь не получил запрос при первой загрузке.Он пытается не превысить этот предел в 5 МБ, так как любое назначенное пространство должно быть общим для всех баз данных.
Если пользователь выбирает разрешение на хранение большего количества контента, приложение пытается открыть базу данных с другим именем.с 40 МБ свободного места (для которого пользователю предлагается утвердить 50 МБ).Это позволяет использовать 40 МБ в этой базе данных и 5 МБ в исходной базе данных предварительного просмотра, поэтому ни один из них не должен завершиться ошибкой при вставке строк - поскольку общий объем в настоящее время составляет 50 МБ для iOS.
Все браузеры в настоящее время обрабатывают ограничения пространства базы данных по-разному, поэтому, еслиВы планируете кроссплатформенность, тестируйте внимательно.Desktop Safari справляется с этим довольно хорошо, позволяя гораздо больше;Chrome вообще не допускает увеличения;и т.д. Ожидайте, что все реализации "HTML5" будут отличаться странным образом:)