2012-01-25 21 views
16

मैं एक ऐसा एप्लीकेशन विकसित कर रहा हूं जो उपयोगकर्ता को सामग्री को संशोधित करने की अनुमति देने के लिए TinyMCE संपादकों का उपयोग करता है। मैंने प्रोटोटाइप.जेएस क्लास विकसित किया है, जो प्रारंभिक रूप से, एक अद्वितीय आईडी उत्पन्न करता है और उस आईडी के साथ <div> पर एक TinyMCE संपादक बनाता है। ,जावास्क्रिप्ट में स्मृति भ्रष्टाचार का कारण क्या हो सकता है?

Region = Class.create(
{ 
    initialize: function(options) 
    { 
    this._editorReady = false; 
    this._index = Region.nextIndex++; 
    this._uid = com.digitalfruition.Customizer.TypeRegion.uidPrefix+this._index; 
    Region.instances.push(this); 
    this.setupTinyMCE(); 
    }, 

    uid: function() 
    { 
    return this._uid; 
    }, 

    index: function() 
    { 
    return this._index; 
    }, 

स्थानों के एक बहुत में मैं, उदाहरण के लिए, ईवेंट TinyMCE संपादक के भीतर हो (उदाहरण के लिए, चयन परिवर्तन) एक Region के uid() के पास भेजेगा मेरी संचालकों: यहाँ प्रासंगिक कोड के कुछ है संपादक की आईडी दी गई है। मैं अक्सर करना होगा:

var index = Region.instances.invoke('uid').indexOf(uid); 

वास्तविक Region उदाहरण इंटरफ़ेस घटनाओं में हुई दर्शाती खोजने के लिए

मैं ही कभी किसी भी Region एक बार की _uid गुण सेट।। इसका मुझे पूर्ण विश्वास है।

लेकिन फ़ायरफ़ॉक्स 9.0.1 में, मैं वास्तव में अजीब व्यवहार देख रहा हूं। जब घटनाएं आग लगती हैं, तो वे जिस संपादक पर गोलीबारी कर रहे हैं उसे नहीं मिला क्योंकि index उपरोक्त कोड में -1 है।

Screen Capture of odd behavior

उन, मेरे कोड से डिबग संदेश होते हैं इस क्षेत्र की this.uid() मूल्य के साथ-साथ विभिन्न चीजों प्रवेश करने (इस मामले में क्षेत्रों की ऊंचाई): Firebug में निरीक्षण के बाद, मैं में देखा। स्मृति को दूषित हो गया प्रतीत होता है! और आप यह भी देख सकते हैं कि यह कहां होता है, पहली सर्कल वाली लॉग प्रविष्टि सही है, और बाद वाले लोग गलत हैं।

सफारी और क्रोम में एक ही कोड ठीक काम करता है। अब तक केवल फ़ायरफ़ॉक्स 9.0.1 प्रभावित किया जा रहा है ...

आगे का निरीक्षण करने के लिए, मैं Firebug कंसोल में इस भाग गया:

>>> com.digitalfruition.Customizer.TypeRegion.instances.invoke('uid'); 
["�ᔮ��蒦ᓤ�瀀魳ᓪ�倀⛺ᓪ�怀�eg����遀"] 

मेरे लिए कोई मतलब नहीं है यही कारण है कि। जावास्क्रिप्ट में इस तरह स्मृति भ्रष्टाचार का कारण क्या हो सकता है? मैं ऐसी स्थिति की समस्या निवारण के बारे में भी कैसे जा सकता हूं?

+0

मैं [जावास्क्रिप्ट चैट] में हूं (http://chat.stackoverflow.com/rooms/17/javascript) यदि आप मुझसे कोई प्रश्न पूछना चाहते हैं! – Josh

+0

यह 'com.digitalfruition.Customizer.TypeRegion' चीज़ कहां से आती है? क्या यह एक शुद्ध जावास्क्रिप्ट वस्तु है? – dyoo

+0

@dyoo क्षमा करें, यह स्पष्ट नहीं है, है ना? :) यह मेरे कोड नमूने में क्षेत्र वस्तु है; मैंने बस अपने प्रश्न के लिए कोड छोटा कर दिया। – Josh

उत्तर

1

क्या यह संभव है कि आपकी फ़ाइलों में से एक को एक अलग एन्कोडिंग से बचाया जाए? मैं इसे देखता हूं, और यह भी सुनिश्चित कर सकता हूं कि आप सही एन्कोडिंग और माइम प्रकारों वाली फ़ाइलों की सेवा कर रहे हैं।

कुछ परीक्षण करना अच्छा विचार हो सकता है जहां आप console.log()uid मानों के रूप में यह पुष्टि करने के लिए उत्पन्न होते हैं कि भ्रष्टाचार वास्तव में वस्तुओं के निर्माण के बाद होता है। मुझे संदेह है कि यह तब बन रहा है जब वे बनाए जाते हैं।

+0

में नहीं होना चाहिए मैं सकारात्मक नहीं हूं कोई एन्कोडिंग बदल गई है ... अच्छा विचार हालांकि! – Josh

+1

इसके अलावा, भ्रष्टाचार निश्चित रूप से वस्तुओं के निर्माण के बाद होता है।ऑब्जेक्ट्स बनने के बाद वे लॉग संदेश होते हैं और आप दिखाए गए स्क्रीन कैप्चर में * तीन * अलग-अलग मान भी देख सकते हैं। तो वे बाद में बदल रहे हैं। – Josh

+0

हमम। क्या आपने क्रोम में यह पुष्टि करने के लिए परीक्षण किया है कि यह सिर्फ एक फ़ायरफ़ॉक्स मुद्दा है? –

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

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