Подтвердить что ты не робот

Как я могу запросить увеличение размера локального хранилища HTML5 на iPad, как это делает веб-приложение FT?

Если вы откроете http://app.ft.com (мобильное веб-приложение Financial Times), вам будет предложено добавить приложение в свой "домашний".

После этого при открытии приложения вам будет предложено снова разрешить размер базы данных localstoreage до 50 МБ.

  • Как это можно сделать? Есть ли какой-либо JavaScript API-вызов? Разрешения или что-то еще?
  • Является ли этот iPad (iOS?) конкретным, или он работает с другими браузерами Webkit?
4b9b3361

Ответ 1

Я знаю кое-что об этом;)

Нет API для запроса увеличения размера хранилища для существующей базы данных. Существует один способ заставить увеличить: записывать данные в базу данных такого размера, что требуется увеличение, вызвав пользователя. Однако это будет медленным, и нет возможности рассказать о выделенном пространстве, поэтому не рекомендуется.

Черная лягушка имеет часть этого правильного: единственный способ сделать это - запросить очень большую базу данных при ее открытии, например:

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" будут отличаться странными способами:)

Ответ 2

Эта база данных является частью 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);
    });
}

Знакомство с базами данных веб-SQL на HTML5 У доктора есть очень быстрый урок о том, как все это работает.

Ответ 3

Я только что протестировал с помощью своего автономного приложения в iPad 2 (iOS 5.1.1), что нам не нужно ничего делать в приложении. Например, у моего приложения около 18 МБ автономных данных. Когда URL-адрес браузера попал в URL-адрес, браузер вытащил сообщение с просьбой увеличить размер до 25 МБ, и я принял его, и все в порядке. Благодаря

Ответ 4

Этот браузер специфичен. Большинство из них установили его на 5 МБ, а некоторые дают возможность увеличить его через настройку где-нибудь. Однако не все браузеры предлагают это.

Ответ 5

Huh - Dive в HTML5 говорит, что ни один браузер не поддерживал это по состоянию на февраль 2011 года, поэтому я думаю, что это может быть iOS 4.3? (iOS 4.3 отправлен в марте 2011 года.)

Я не могу найти ссылки на него из быстрого Google. Возможно, в документации для разработчиков яблок может быть упоминание об этом - я не уверен, что это доступно для подписчиков, не относящихся к SDK, хотя.