PouchDB IE11 используя файл: // - PullRequest
0 голосов
/ 25 февраля 2020

Я пытаюсь получить руководство PouchDB , работающее с использованием IE11, из локального файла (file: //). Возможно ли это?

Он отлично работает при использовании локального http-сервера, добавив в заголовок индекса следующие сценарии. html file:

<script src="https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/whatwg-fetch@3.0.0/dist/fetch.umd.min.js"></script>      

Я думаю, что моя проблема заключается в indexedDB и localStorage, по-видимому, ограничены IE при обслуживании с использованием протокола file: //, однако мне удалось заставить localStorage работать самостоятельно, используя приведенный ниже код из этой записи :

!localStorage && (l = location, p = l.pathname.replace(/(^..)(:)/, "$1$$"), (l.href = l.protocol + "//127.0.0.1" + p));

Так что я подумал, что это заработало бы, но даже тогда, когда я добавил адаптер localstorage pouchdb Я получаю эту ошибку: «AssertionError: требуется .status, старый abstract-leveldown».

Даже если это сработало, решение не идеальное, потому что мне нужно добавить файл: //127.0.0.1 в список доверенных сайтов.

Это все, что я получил, любая помощь будет оценена!

1 Ответ

1 голос
/ 25 февраля 2020

Благодаря комментарию Zhi Lv - MSFT Мне удалось получить демонстрационную версию, работающую в IE11, однако он требует, чтобы пользователь добавил 'file: //127.0.0.1' в список доверенных сайтов в IE.

После завершения руководства «Приступая к работе» необходимо внести следующие изменения.

Обновить элемент head в index. html file:

  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>VanillaJS • TodoMVC</title>
    <link rel="stylesheet" href="style/base.css">
    <script src="https://cdn.jsdelivr.net/npm/promise-polyfill@8/dist/polyfill.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/whatwg-fetch@3.0.0/dist/fetch.umd.min.js"></script>      
    <script src="pouchdb/object-assign.js"></script>
    <script src="pouchdb/pouchdb-7.2.1.js"></script>
    <script src="pouchdb/pouchdb.localstorage.js"></script>
    <script src="pouchdb/pouchdb.memory.js"></script>

    <!--[if IE]>
      <script src="style/ie.js"></script>
    <![endif]-->
  </head>

Вам нужно будет загрузить все отсутствующие 7.2.1 файлы pouch-db и поместить в каталог pouchdb. object-assign. js можно найти здесь .

Измените приложение. js, замените переменную db следующими двумя строками:

  !localStorage && (l = location, p = l.pathname.replace(/(^..)(:)/, "$1$$"), (l.href = l.protocol + "//127.0.0.1" + p));
  var db = new PouchDB('todos', {adapter: 'localstorage'});

Перейдите на строку 8796 файла pouchdb.localstorage. js, отредактируйте его, чтобы установить db.status следующим образом:

function LevelUP (db, options, callback) {
  db.status = 'unknown';
  if (!(this instanceof LevelUP)) {
    return new LevelUP(db, options, callback)
  }

Немного грязи, но у меня получилось. Любое улучшение, пожалуйста, дайте мне знать.

...