2012-02-05 9 views
9

मेरे पास एक साधारण HTML5 ऐप है जो मैं वर्तमान में काम कर रहा हूं और मुझे आश्चर्य है कि समय के बाद एचटीएमएल 5 स्थानीय स्टोरेज में किसी आइटम को निकालना संभव है, जैसे: 24 घंटे के बाद, इस आइटम को हटाएं, आदिसमय के बाद एचटीएमएल 5 स्थानीय स्टोरेज में किसी आइटम को हटा रहा है?

मुझे लगता है कि जावास्क्रिप्ट में निर्मित दिनांक वस्तु शायद मुझे चाहिए।

क्या यह संभव है? कुछ कोड उदाहरण अच्छे होंगे यदि आप कर सकते हैं, धन्यवाद!

उत्तर

10

आप डेटा

//add data we are interested in tracking to an array 
var values = new Array(); 
var oneday = new Date(); 
oneday.setHours(oneday.getHours() + 24); //one day from now 
values.push("hello world"); 
values.push(oneday); 
try { 
    localStorage.setItem(0, values.join(";")); 
} 
catch (e) { } 

//check if past expiration date 
var values = localStorage.getItem(0).split(";"); 
if (values[1] < new Date()) { 
    localStorage.removeItem(0); 
} 
+0

मैं इस समाधान चाहते लेकिन मुझे लगता है कि इस विशिष्ट उदाहरण है कि महत्व देता है [1] एक दिनांक वस्तु इसकी तुलना में पहले में पार्स करने की आवश्यकता है के लिए ध्यान दिया जाना चाहिए। इस नई तारीख की तरह (मूल्य [1]) – labago

0

के साथ तारीख की दुकान आप मुझे लगता है कि आप मूल रूप से इसे मैन्युअल रूप से करना है यह करने के लिए चाहते हैं, तो हो सकता है। उदाहरण के लिए, आप टाइमस्टैम्प को स्थानीय स्टोरेज स्लॉट में संग्रहीत कर रहे प्रत्येक मूल्य के साथ स्टोर कर सकते हैं, और उसके बाद कुछ समय के अंतराल जैसे टाइम लोड या सेटटाइमआउट या कुछ समय पर टाइमस्टैम्प की जांच कर सकते हैं।

उदाहरण:

//this function sets the value, and marks the timestamp 
function setNewVal(prop) 
{ 
    window.localStorage[prop] = Math.random(); 
    window.localStorage[prop+"timestamp"] = new Date(); 
} 

//this function checks to see which ones need refreshing 
function someRucurringFunction() 
{ 
    //check each property in localStorage 
    for (var prop in window.localStorage) 
    { //if the property name contains the string "timestamp" 
     if (prop.indexOf("timestamp") != -1) 
     { //get date objects 
      var timestamp = new Date(window.localStorage[prop]); 
      var currentTime = new Date(); 

      //currently set to 30 days, 12 hours, 1 min, 1s (don't set to 0!) 
      var maxAge = (1000 * 1) *//s 
          (60  * 1) *//m 
          (60  * 12) *//h 
          (24  * 30); //d 

      if ((currentTime - timestamp) > maxAge) 
      {//if the property is too old (yes, this really does work!) 
       //get the string of the real property (this prop - "timestamp") 
       var propString = prop.replace("timestamp",""); 
       //send it to some function that sets a new value 
       setNewVal(propString); 
      } 
     } 
    } 
} 
//set the loop 
window.setInterval(someRucurringFunction,(1000*60*60); 

संपादित करें: mrtsherman की विधि पूरी तरह से के रूप में अच्छी तरह से काम करेगा। इसी प्रकार, आप उस ऑब्जेक्ट की संपत्ति के रूप में टाइमस्टैम्प दर्ज कर सकते हैं जिसे आप JSON.stringify/parse() के साथ संग्रहीत/पुनर्प्राप्त कर सकते हैं। यदि या तो सरणी या वस्तु बहुत बड़ी है, या आपके पास उनमें से बहुत से हैं, तो शायद मैं दक्षता के लिए समांतर संपत्ति विधि का उपयोग करने का सुझाव दूंगा।

-3
window.setInterval(function() { 
     localStorage.setItem('nicwincount', 0); 
},8640000); //24 * 60mins * 60sec 

ps: nicwincount आपके द्वारा पहले सेट किया गया एक स्थानीय स्टोरेज है। localStorage.setItem ('फ़ीड', Ext.encode (फ़ीड));

आशा आपकी मदद कर सकती है।

+1

क्या यह मानता है कि डिवाइस 24 घंटे तक पृष्ठ पर बना रहता है? संभावना नहीं! ;-) – markE

1

उपयोग इस समाधान:

(function() { 

    var lastclear = localStorage.getItem('lastclear'), 
     time_now = (new Date()).getTime(); 

    // .getTime() returns milliseconds so 1000 * 60 * 60 * 24 = 24 days 
    if ((time_now - lastclear) > 1000 * 60 * 60 * 24) { 

    localStorage.clear(); 

    localStorage.setItem('lastclear', time_now); 
    } 

})(); 
+0

जो रहने की जरूरत है ?! यह आपको स्थानीय स्टोरेज की जांच करता है यदि आप पिछले एक्स समय में साइट पर जाते हैं और इसे बड़ा करते हैं तो इसे हटा दें। –

+0

तो अगर यह आपके –

+0

के लिए काम कर रहा है तो givme +1 मुझे लगता है कि आपका मतलब 1000 * 60 * 60 * 24 = 24 घंटे 24 दिन नहीं है – Yuhao