Chrome версия 58 «Ошибка типа: navigator.storage.estimate не является функцией» - PullRequest
0 голосов
/ 17 апреля 2020

У меня есть кусок кода, который запускается navigator.storage.estimate() для моей indexedDB, когда веб-приложение запускается на планшете Android, который должен работать Android 7.1.1.

Я сталкиваюсь с проблема на Android, которая использует браузер chrome ver. 58, и это происходит:

TypeError: navigator.storage.estimate is not a function

Из документации MDN представляется, что .estimate() должно поддерживаться начиная с версии 52. https://developer.mozilla.org/en-US/docs/Web/API/StorageManager/estimate

Версии браузера после 58 также, похоже, не сталкиваются с той же проблемой.

Вот код, который запускает функцию:

const storageSetup = async () => {
    let errorMessage = undefined;

    try {
        const granted = await navigator.storage.persist();
        if (granted)
            console.log("Storage is now going to be persistent...", granted);
    } catch (error) {
        errorMessage = `Client did not allow storage to be persistent..${error}`;
    }

    try {
        const response = await navigator.storage.estimate();
        console.log("Storage Estimate, ", response, "Usage: ", (response.usage * 100 / response.quota).toFixed(2));
    } catch (error) {
        errorMessage = `estimate() is not supported on tablet, ${error}`;
    }

1 Ответ

1 голос
/ 17 апреля 2020

Документация, которую вы используете для StoreManager, а не для navigator.storage.

  const storageSetup = async () => {
    let errorMessage = undefined;
    const storage = navigator.storage || StoreManager;
    try {
        const granted = await storage.persist();
        if (granted)
            console.log("Storage is now going to be persistent...", granted);
    } catch (error) {
        errorMessage = `Client did not allow storage to be persistent..${error}`;
    }

    try {
        const response = await navigator.storage.estimate();
        console.log("Storage Estimate, ", response, "Usage: ", (response.usage * 100 / response.quota).toFixed(2));
    } catch (error) {
        errorMessage = `estimate() is not supported on tablet, ${error}`;
    }
...