Я хочу использовать indexedDB polyfill с кодом Dart, скомпилированным в Javascript. Когда я просто добавил необходимый скрипт, код dart2js не распознает свойство window.indexedDB
как экземпляр IDBFactory и производит перехватчик UnknownJavaScriptObject
.Как использовать javascript polyfills с dart2js
Я пытался заставить constructor.name на элементах polyfill, начал с 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-перехватчик.
Как правильно подключить объект и перехватчик?
Lawndart кажется хорошим решением, я рассмотрю возможность интеграции этого проекта. Тем не менее, им нужен способ повторного использования javascript-прокладок для прозрачного резервного копирования с любой веб-функцией (которая может не иметь альтернативы библиотеки дарта). – MDerks
Да - проблема заключается в том, чтобы подтянуть подкладку до Dart apis. Чтобы сделать это для этой прошивки indexeddb, вам, вероятно, потребуется изменить источник dart: html в самом проекте Dart. Другой вариант - скопировать dart: html indexeddb интерфейсы, а затем повторно реализовать их с помощью js interop. –
Я заметил что-то новое в дроти: js сегодня. См. [JSObject.fromBrowserObject()] (https://api.dartlang.org/docs/channels/stable/latest/dart_js/JsObject.html#fromBrowserObject). Это должно помочь сделать полисы. –