[javascript] حلول الاستبدال الاحتياطي لـ HTML5 المحلية



Answers

نقية JS القائمة بسيطة polyStill المحلية:

عرض توضيحي: http://jsfiddle.net/aamir/S4X35/

HTML:

<a href='#' onclick="store.set('foo','bar')">set key: foo, with value: bar</a><br/>
<a href='#' onclick="alert(store.get('foo'))">get key: foo</a><br/>
<a href='#' onclick="store.del('foo')">delete key: foo</a>​

JS:

window.store = {
    localStoreSupport: function() {
        try {
            return 'localStorage' in window && window['localStorage'] !== null;
        } catch (e) {
            return false;
        }
    },
    set: function(name,value,days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        }
        else {
            var expires = "";
        }
        if( this.localStoreSupport() ) {
            localStorage.setItem(name, value);
        }
        else {
            document.cookie = name+"="+value+expires+"; path=/";
        }
    },
    get: function(name) {
        if( this.localStoreSupport() ) {
            var ret = localStorage.getItem(name);
            //console.log(typeof ret);
            switch (ret) {
              case 'true': 
                  return true;
              case 'false':
                  return false;
              default:
                  return ret;
            }
        }
        else {
            var nameEQ = name + "=";
            var ca = document.cookie.split(';');
            for(var i=0;i < ca.length;i++) {
                var c = ca[i];
                while (c.charAt(0)==' ') c = c.substring(1,c.length);
                if (c.indexOf(nameEQ) == 0) {
                    ret = c.substring(nameEQ.length,c.length);
                    switch (ret) {
                      case 'true': 
                          return true;
                      case 'false':
                          return false;
                      default:
                          return ret;
                    }
                }
            }
            return null;
        }
    },
    del: function(name) {
        if( this.localStoreSupport() ) {
            localStorage.removeItem(name);
        }
        else {
            this.set(name,"",-1);
        }
    }
}​
Question

أبحث عن مكتبات وجافا سكريبت التي يمكنها محاكاة localStorage على المتصفحات التي ليس لديها دعم أصلي.

في الأساس ، أرغب في ترميز موقعي باستخدام localStorage لتخزين البيانات ومعرفة أنها ستظل تعمل على المتصفحات التي لا تدعمها أصلاً. هذا يعني أن المكتبة window.localStorage ما إذا كان window.localStorage موجودًا window.localStorage إذا كان موجودًا. إذا لم يكن موجودًا ، فإنه سيخلق نوعًا من طريقة التخزين الاحتياطي للتخزين المحلي ، عن طريق إنشاء تطبيق خاص به في مساحة الاسم window.localStorage .

حتى الآن ، وجدت هذه الحلول:

  1. sessionStorage التنفيذ.
  2. تطبيق يستخدم ملفات تعريف الارتباط (غير مبتهجة بهذه الفكرة).
  3. dojox.storage ، ولكن هو شيء خاص بها ، وليس حقا الارتداد.

أعي أنه يمكن استخدام Flash و Silverlight للتخزين المحلي أيضًا ، ولكن لم نعثر على أي شيء لاستخدامها كخلفية للموقع القياسي المحلي بتنسيق HTML5. ربما تمتلك Google Gears هذه الإمكانية أيضًا؟

يرجى مشاركة أي مكتبات أو موارد أو مقتطفات برمجية ذات صلة عثرت عليها! سأكون مهتمًا بشكل خاص بالحلول المبنية على javascript أو jquery ، ولكنني أعتقد أن هذا غير محتمل.




يبدو Lawnchair بديلاً جيدًا أيضًا

كرسي الحديقة هو شيء مثل الأريكة باستثناء أصغر وخارجها. مثالية لتطبيقات الجوال html5 التي تحتاج إلى حل استمرار خفيفة الوزن ، والتكيف ، بسيطة وأنيقة.

  • مجموعات. مثال مرتخية هو في الحقيقة مجرد مجموعة من الأشياء.
  • استمرار التكيف. يتم استخلاص مخزن الأساسي وراء واجهة متسقة.
  • سلوك التجميع القابل للتوصيل. في بعض الأحيان نحتاج إلى مساعدي جمع ولكن ليس دائمًا.



يستخدم store.js userData و IE و localStorage على المتصفحات الأخرى.

  • لا تحاول أن تفعل أي شيء معقد للغاية

  • لا ملفات تعريف الارتباط ، لا فلاش ، لا jQuery اللازمة.

  • واجهة برمجة تطبيقات نظيفة.

  • 5 كيلو بايت مضغوط

https://github.com/marcuswestin/store.js




أنا شخصيا أفضل amplify.js . لقد عملت بشكل جيد بالنسبة لي في الماضي وأوصيت به لجميع احتياجات التخزين المحلية.

يدعم IE 5+ ، وفايرفوكس 2+ ، و Safari 4+ ، و Chrome ، و Opera 10.5+ ، و iPhone 2+ ، و Android 2+ ، ويوفر واجهة برمجة تطبيقات متسقة للتعامل مع مستعرض التخزين




Links