سؤال

أنا ألعب باستخدام IndexedDB API من مواصفات html5 في كل من Firefox وChrome.

هناك شيء لا يعمل كما هو متوقع وأريد مشاركته هنا لأنني لا أعرف ما إذا كان خطأي أم خطأ في المتصفح.

بحسب ال واجهة برمجة التطبيقات, ، هناك حدث يسمى com.onversionchange يتم تشغيله عند فتح اتصال بقاعدة بيانات محلية ويكون رقم الإصدار المستخدم أكبر من رقم قاعدة البيانات.مشكلتي هي أن هذا الحدث يتم تشغيله في Firefox ولكن ليس في Chrome.

بعض نماذج التعليمات البرمجية تحاول عدة أوضاع:

var db;
var DB_VERSION = 5;
var openRequest = iDb.open("test_db", DB_VERSION, function() {
    console.log("This is the place where I can change db structure");
});
openRequest.onSuccess = function(event) {
    db = openRequest.result;
};
openRequest.onversionchange = function(event) {
    console.log("This is the place where I can change db structure");
};
openRequest.onupgradeneeded = function(event) {
    console.log("This is the place where I can change db structure");
};

لا يتم تشغيل حدث onversionchage حتى عندما أقوم بتغيير رقم الإصدار.

تحديثمثل ابيديل أجاب، إن تطبيق Chrome لا يتبع المواصفات الحالية، لذلك، للحصول على رمز عميل عبر المتصفح، نحتاج إلى التعامل مع حالتين: com.onversionchange الحدث و قاعدة البيانات.الإصدار المقارنة اليدوية.

فيما يلي زوجان من الروابط مع مثال التعليمات البرمجية:مجموعة جوجل كروم وHTML5 الصخور!

هل كانت مفيدة؟

المحلول

يعتمد تطبيق IndexedDB في Chrome على إصدار أقدم من المواصفات الذي يستخدم الإصدار الأقدم setVersion اتصل بدلا من onversionchange/onupgradeneeded.يرجى وضع نجمة على هذا العدد: http://crbug.com/108223

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top