При попытке сохранить каплю (извлеченную с помощью запроса XMLHttpRequest
GET
, Safari на прошивке 8.4 бросает ошибку:Попытка хранить блобы в IOS Safari 8 бросает DataCloneError
DataCloneError: DOM IDBDatabase Exception 25: The data being stored could
not be cloned by the internal structured cloning algorithm
Это случилось с моим кодом, а также этот пример: http://robnyman.github.io/html5demos/indexeddb/
Это линия, которая вызывает мой код (и в приведенном выше примере) на провал:
//This throws the error
var put = transaction.objectStore("elephants").put(blob, "image");
есть ли исправление для этого? Должен ли сначала использовать blob base64 (например, вы должны были использовать WebSQL)?
Моего КОД(работаю в настольном Chrome/Firefox и Chrome/Firefox на Android):
var xhr = new XMLHttpRequest();
var blob;
//Get the Video
xhr.open("GET", "test.mp4", true);
//Set as blob
xhr.responseType = "blob";
//Listen for blob
xhr.addEventListener("load", function() {
if (xhr.status === 200) {
blob = xhr.response;
//Start transaction
var transaction = db.transaction(["Videos"], "readwrite");
//IT FAILS HERE
var put = transaction.objectStore("Videos").put(blob, "savedvideo");
}
else {
console.log("ERROR: Unable to download video.");
}
}, false);
xhr.send();
Благодарим вас за то, что нашли время, чтобы узнать это здесь. Вы столкнулись с любыми другими проблемами StackOverflow, которые должны быть связаны здесь? Или проблемы на других сайтах StackExchange? – sideshowbarker
Кроме того, вы знаете, есть ли ошибка Safari/WebKit https://bugs.webkit.org/ для этого? Если нет, пожалуйста, подумайте о повышении. И независимо (если есть уже один открытый или если вы открываете его), было бы неплохо также ссылаться на это отсюда. – sideshowbarker
@sideshowbarker Я создал ошибку в базе данных ошибок Apple, а не webkit, это не проблема WebKit (работает в Chrome до того, как они отключили WebKit). Реализация Safari неверна. Я нашел несколько других старых вопросов от людей, которые, возможно, испытывают одно и то же (не уверен, что их код не существует), но нет ответов. –