0

我想将indexedDB polyfill与编译为 Javascript 的 Dart 代码一起使用。当我刚刚添加所需的脚本时,dart2js 代码无法将window.indexedDB属性识别为 IDBFactory 实例并生成UnknownJavaScriptObject拦截器。

我试图在polyfill的元素上强制constructor.name,从indexedDB

    var shimIndexedDB = {
        /**
         * Force correct constructor name.
         */
        constructor: function IDBFactory(){},

        /**
         * The IndexedDB Method to create a new database and return the DB
         * @param {Object} name
         * @param {Object} version
         */
        open: function(name, version){

这是向前迈出的一步,拦截器是正确的。不幸的是,当我向 IDBOpenDBRequest 添加类似的构造时,它的对象也得到了 IDBFactory 拦截器。

如何正确连接对象和拦截器?

4

1 回答 1

1

你可以改用草坪达特图书馆吗?

它在本地存储、索引数据库和 websql 之上提供了一个通用 API。

从文档:

您可以使用此库来帮助处理各种客户端存储选项。您应该能够针对 Lawndart 接口编写代码,并使其在至少支持以下之一的浏览器中运行:本地存储、索引数据库和 websql。

要让 indexeddb javascript polyfill 工作,您需要通过dart:js互操作调用它的 API。这可能比使用像 glassdart 这样的库要复杂得多。这是一篇关于使用 dart:js 互操作的文章。

于 2013-12-03T02:44:34.410 回答