नोट: यह एक समाधान नहीं है के बाद से मेरा मानना है कि अक्षमता इन दो कार्यक्षमताओं एक साथ काम करने के लिए रहता है एचटीएमएल कल्पना ही (यानी एक साथ काम नहीं कर में बात जानबूझकर है के बाद से ब्राउज़र निर्धारित नहीं कर सकता है कि क्या आप चाहते हैं ध्यान केंद्रित करने या mousedown घटना पर खींचें करने के लिए)
मैं तुम्हें स्पष्ट रूप से सेट 'नहीं पुस्तकालयों' देखा, तो मैं एक कच्चे जावास्क्रिप्ट/एचटीएमएल 5 का जवाब
http://jsfiddle.net/4rdpV/26/
यह इस पर मेरी दरार था प्रदान करेगा।
सबसे पहले, डेटा को एक ही स्थानीय स्टोरेज आइटम में स्कैटर करने के बजाय बेहतर करना बेहतर हो सकता है।
storage={
'1.text':'test 1',
'2.text':'test 2'
}
if(localStorage['test']){
storage=JSON.parse(localStorage['test'])
}
यह ऑब्जेक्ट और स्ट्रिंग के बीच परिवर्तित करने के लिए JSON का उपयोग करके उस क्षमता को बनाता है। वस्तुओं को वास्तव में घोंसला
मैंने आइटम के बगल में (edit)
लिंक भी जोड़े, जब क्लिक किया गया, तो ये लिंक आइटम को input
तत्वों में बदल देंगे, ताकि आप टेक्स्ट को संपादित कर सकें। प्रवेश करने के बाद, यह इसे वापस बदल देता है और डेटा बचाता है। उसी समय, सूची आइटम खींचने योग्य रहते हैं।
सहेजने के बाद, क्रोम में F12 मारा, सांत्वना मिल जाए, और localStorage वस्तु में देखें, तो आप सभी डेटा एक वस्तु का उपयोग कर JSON.stringify()
मैं अपना सर्वश्रेष्ठ करने की कोशिश की करने के लिए इस डिजाइन करने के लिए के रूप में localStorage['test']
में बचा लिया गया था देखेंगे स्केल करने योग्य हो, और मुझे लगता है कि मैं काफी सफल रहा; आपको केवल एक कंटेनर के साथ एचटीएमएल को प्रतिस्थापित करने की आवश्यकता है और edit()
के पैरामीटर को भरने के लिए अपनी पसंद के इटरेटर का उपयोग करके कई वस्तुओं को लिखने के लिए लूप के लिए जावास्क्रिप्ट का उपयोग करना होगा। उदाहरण के लिए:
कहें कि आपने सूचियों के "प्रतिमान" को पकड़ने के लिए भंडारण बदल दिया है, और आपके पास "शॉपिंग सूची" कहा जाता है।और कहते हैं कि भंडारण वस्तु इस तरह दिखता है:
{
"shopping list":{
1:"Milk",
2:"Eggs",
3:"Bread"
}
}
यह है कि सूची प्रस्तुत करना सकता है:
for(i in storage['shopping list']){
_item = storage['shopping list'][i];
container.innerHTML+='<li draggable=true><a id="item'+i+'">'+_item+'</a><a href="#" onclick="edit('+i+')"> (edit)</a></li>'
}
बेशक
, यदि आप भंडारण वस्तु की संरचना संपादित करने के लिए थे, तो आप करने की आवश्यकता होगी कार्यों को भी संपादित करें।
उत्पादन कुछ इस तरह दिखेगा:
Milk (edit)
Eggs (edit)
Bread (edit)
इनपुट तत्वों के बारे में चिंता मत करो कि यदि आप चिंता; सीएसएस आसानी से इसे ठीक करने के लिए ठीक कर सकता है जैसे यह नहीं बदला।
आप (edit)
लिंक दिखाई दे सकता है नहीं करना चाहते हैं, उदाहरण के लिए, तो आप इस सीएसएस में कर सकते हैं:
a[href="#"]{
display:none;
}
li[draggable="true"]:hover a[href="#"]{
display:inline;
}
अब संपादित करें लिंक केवल तभी दिखाई देगा जब आप सूची आइटम पर माउस को हॉवर , इस संस्करण की तरह:
http://jsfiddle.net/4rdpV/27/
मुझे आशा है कि इस उत्तर में मदद मिलेगी।
ने अभी एक बग की सूचना दी: http://code.google.com/p/chromium/issues/detail?id=170139 यह देखने के लिए "आधिकारिक" प्रतिक्रिया का इंतजार करेगा कि यह एक बग या जानबूझकर है या नहीं व्यवहार –
बग बस ब्लिंक में तय किया गया था! यह क्रोम 29.0.1547.2 कैनरी –