indexDB не сохраняется в SFSafariViewController - PullRequest
0 голосов
/ 12 декабря 2018

С учетом сценария:

function test() {
  let req = window.indexedDB.open("testingdb", 1);

  req.onupgradeneeded = evt => {
    let db = evt.target.result;
    if (!db.objectStoreNames.contains("keys")) {
      db.createObjectStore("keys", { keyPath: "id", autoIncrement: true });
    }
  };

  req.onsuccess = evt => {
    let db = evt.target.result;
    let tx = db.transaction("keys", "readwrite");
    let st = tx.objectStore("keys");
    let dataReq = st.getAll();
    dataReq.onsuccess = dataEvt => {
      if (dataEvt.target.result.length === 0) {
        alert("new db");
        st.add({ test: 1 });
      } else {
        alert("old db");
      }
      db.close();
    };
  };
}

Если я запускаю его при загрузке страницы в Safari на iOS 12, при первой загрузке я получаю предупреждение «new db», при каждой последующей загрузке я получаю «old db».Я могу выйти из Safari, перезагрузить телефон и т. Д. И получить «старый дБ».

Если я использую SFSafariViewController , первая загрузка дает мне «новый дБ», перезагрузка дает мне «старый дБ».НО, если я нажму «Готово», БД будет стерта, и последующие init дадут мне «новый БД», поэтому indexDB просто не сохраняется между сессиями.Печенье есть, локальное хранилище есть.Per:

  if (localStorage.getItem("testing")) {
    alert("old local storage");
  } else {
    alert("new local storage");
    localStorage.setItem("testing", "yay");
  }

Есть ли обходной путь к этой ошибке?Может ли ошибка быть обнаружена без выхода и ввода SFViewController

...