2011-11-14 7 views
8
var data = { url: $(this).attr('href'), selector: $(this) }; 
history.pushState(data, 'foo', $(this).attr('href')); 

जब मैं यह कर मैं एक त्रुटि मिलती है jQuery वस्तु पारित करने के लिए:कैसे history.pushState को

Component returned failure code: 0x8000ffff (NS_ERROR_UNEXPECTED) [nsIDOMHistory.pushState]

अगर मैं एक स्ट्रिंग के लिए चयनकर्ता बदलने के लिए, तो त्रुटि दूर चला जाता है ... लेकिन मैं jQuery ऑब्जेक्ट की आवश्यकता है, इसलिए मैं इसे "पॉपस्टेट" ईवेंट पर क्लिक कर सकता हूं:

उत्तर

0

ब्रायन निकेल और ग्रेगेल के उत्तर दोनों पर विस्तार करते हुए, आप इसे $ ('#' + this.id) .attr ('href') कर कर हल कर सकते हैं ... जब तक आप दोनों द्वारा सुझाए गए डीओएम को आईडी करते हैं मेरे सामने लोग

कभी कभी मैं केवल परिणाम मैं द्वारा चाहते:

var $this = $('#'+this.id); //.... before hand ... 

और यह मेरे साथ और अधिक रचनात्मक होने की अनुमति देता मेरे आईडी-इंग जहां, उदाहरण के लिए, मैं $('#'+this.id+'*locator*');

... id='abGGFather' 
... id='abGFather' 
... id='abFather' 
... id='ab' 
9

इतिहास स्थिति में डेटा क्रमिक होना चाहिए। यही है, यह JSON में परिवर्तनीय होना चाहिए। $(this) डीओएम नोड्स के साथ एक सरणी जैसी वस्तु देता है जिसे JSON में परिवर्तित नहीं किया जा सकता है। आप जो भी खोज रहे हैं उसे करने के लिए आपको एक अलग तरीके की तलाश करनी चाहिए।

याद रखें, पुश स्थिति है सहायक जानकारी और कैनोलिक होने का मतलब नहीं है। यदि उपयोगकर्ता को पता बार में यूआरएल की प्रतिलिपि बनाने और पेस्ट करके सटीक वही सामग्री नहीं मिल सकती है तो आपको कोई समस्या है।

0

jQuery ऑब्जेक्ट द्वारा प्रदर्शित डीओएम नोड में एक आईडी या अन्य अद्वितीय विशेषता निर्दिष्ट करने पर विचार करें, तो आप केवल उस डेटा के मान को अपने डेटा ऑब्जेक्ट में एक स्ट्रिंग के रूप में संग्रहीत कर सकते हैं, जो क्रमिक है।

यदि तत्व में कोई अद्वितीय आईडी नहीं है, तो उसे उत्पन्न करने और तत्व में जोड़ने पर विचार करें।

3

हो सकता था आप एक (un-serializable) समृद्ध ऑब्जेक्ट का संदर्भ संग्रहीत कर सकते हैं और उसके बाद संदर्भ द्वारा इसे पुनः प्राप्त कर सकते हैं।

var historyStateReference = { 
    url1:{/*richobj*/}, 
    url2:{/*richobj*/}  
} 
var serializableObj = { 
    richObjRef = "url1", 
    //otherProps 
} 


// pushState with a simple serializable Object 
history.pushState(serializableObj, null, "newPath"); 



// then later refrence it via history.state 
historyStateReference[history.state.richObjRef] ​ 
+0

बड़ा डोम तत्व फ़ायरफ़ॉक्स देव पेज के अनुसार राम पर लोड का एक बहुत पैदा करेगा डेटा हार्ड डिस्क पर संग्रहीत और जरूरत पड़ने पर –

+0

वास्तव में सुनिश्चित नहीं हैं कि क्या कर रहे हैं केवल लिया गया है:

एक त्वरित प्रदर्शन देखें कह रहे हैं, कृपया – adardesign

+0

को स्पष्टीकरण दें क्षमा करें, मैं इस सवाल को गलत तरीके से मानता हूं, मैं जल्द ही अपनी टिप्पणियों को हटा दूंगा –

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^