javascript - PouchDB IE11 使用文件 ://

标签 javascript html internet-explorer pouchdb

我正在尝试获取 PouchDB 的 Getting Started Guide使用 IE11 从本地文件 (file://) 进行工作。可能吗?

通过将以下脚本添加到 index.html 文件的 header ,使用本地 http 服务器效果很好:

<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在使用file://协议(protocol)提供服务时似乎都受到IE的限制,但是我能够使用下面的代码让localStorage自行工作post :

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

所以我认为这会让它正常工作,但即使如此,当我添加 pouchdb localstorage adapter 时我收到此错误:“AssertionError:需要 .status,旧的抽象级别”。

即使这确实有效,该解决方案也并不理想,因为我需要将 file://127.0.0.1 添加到受信任的站点列表中。

据我所知,任何帮助都将不胜感激!

最佳答案

感谢Zhi Lv - MSFT我能够在 IE11 中运行该演示,但它要求用户将“file://127.0.0.1”添加到 IE 中的受信任站点列表中。

完成“入门”指南后,您需要进行以下更改。

更新index.html文件中的head元素:

  <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 files并放入 pouchdb 目录中。 object-assign.js 可以找到 here .

修改app.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'});

转到 pouchdb.localstorage.js 的第 8796 行,编辑它以设置 db.status,如下所示:

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

有点困惑,但对我有用。有任何改进请告诉我。

关于javascript - PouchDB IE11 使用文件 ://,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60385979/

相关文章:

javascript - 如何修复backbone.js的iOS 9 window.location问题

javascript - 缺少样式的 append 元素

javascript - ngFor 未在 IE 11 中更新(带有 CoreJS 的 RC4)

javascript - 使用 PM2 监控 Gruntjs 任务运行程序,可能吗?

javascript - 两个 'equal' javascript 对象不相等

html - 边界半径不适用于 IE-8

html - 具有不透明度值的悬停背景和具有不同不透明度值的悬停按钮

html - 如何让 IE 在打印时显示所有背景图像?

javascript - 如何使用 JavaScript 在 IE7 中对 location.search 参数进行 urlencode

javascript - CORS 不适用于 jQuery 和 Java