2013-06-04 6 views
10

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

हालांकि यह काम करता है, मुझे लगता है कि अनुरोध से प्रतिक्रिया मेरी स्क्रिप्ट में संसाधित की जा रही है (जिसमें डीओएम का काफी भारी अद्यतन होता है) एनीमेशन फ्रीज होता है।

मेरा शोध मुझे विश्वास दिलाता है कि ऐसा इसलिए है क्योंकि जीआईएफ की एनीमेशन उसी थ्रेड पर होता है जिस पर जावास्क्रिप्ट चल रहा है - ब्राउज़र वास्तव में सिंगल-थ्रेडेड है। क्या यह सभी मौजूदा मुख्यधारा के ब्राउज़र (जैसे क्रोम, फ़ायरफ़ॉक्स, सफारी, आईई) के लिए सही व्याख्या है?

दूसरा, ऐसा क्यों किया जाता है? क्या यह वास्तव में संभव नहीं है कि ब्राउजर जीआईएफ एनिमेशन में थ्रेड समर्पित कर सके ताकि जावास्क्रिप्ट के ब्लॉक को निष्पादित किए जाने पर वे जमा न हों?

अद्यतन

This एक दिलचस्प पेज है। यह शुद्ध CSS3 एनिमेशन का उपयोग करने के बारे में बात करता है। वे अभी भी फ़ायरफ़ॉक्स में फ्रीज हैं - शायद जल्द ही एफएफ इसे ठीक करेगा। ऐसा लगता है कि मुझे एनीमेशन के लिए सीएसएस पर विचार करना चाहिए बल्कि जीआईएफ का उपयोग करना चाहिए।

+0

इस जांच करना आसान नहीं होना चाहिए? वेब इंस्पेक्टर को ऊपर खींचें, ब्रेकपॉइंट सेट करें। मेरा अनुमान नहीं है, लेकिन अगर यह वास्तव में है, तो शायद यह लोगों को gifs का उपयोग बंद करने में मदद करेगा, इस मामले में, शायद इसे ठीक नहीं किया जाना चाहिए ... –

+0

ठीक है हाँ, ब्रेकपॉइंट सेट करने से एनिमेटेड जीआईएफ चलने से रोकता है। तो, एनिमेटेड जीआईएफ के लिए आपका विकल्प क्या है? –

+0

मेरे पास एक * खुद * नहीं है, और ऐसा लगता है कि क्लाइंट सॉफ़्टवेयर में व्यापक रूप से समर्थित प्रारूप नहीं है जो जीआईएफ की भयानक गुणवत्ता की स्थिरता से मेल खाता है, लेकिन आपको पता होना चाहिए कि जीआईएफ प्रारूप स्वयं (और सभी ज्ञात हैं सॉफ़्टवेयर जो इसे प्रस्तुत करता है) बहुत पुराना है। जीआईएफ सामूहिक रूप से हमें कई गिगावाटों से लूटता है, मैं डरता हूं। और मोबाइल उपकरणों पर किसी भी गैर-तुच्छ समाधान के लिए कुत्ते-धीमी गति से चलता है –

उत्तर

1

मुझे लगता है कि प्रॉब्लम (आईएमएचओ) है कि जब आप डोम को अपडेट करते हैं तो ब्राउज़र पृष्ठ को पुन: चित्रित नहीं करता है, इसलिए छवि स्थिर हो जाती है।

परिवर्तन डोम के बिना भारी चीज करने का प्रयास करें, gif को एनिमेट करना चाहिए (धीरे-धीरे यदि आपका सीपीयू व्यस्त है) लेकिन फ्रीज नहीं है।

यदि यह वैसे भी स्थिर हो जाता है तो आप उस काम के लिए स्पष्ट रूप से एक नया धागा बना सकते हैं (वेबवर्कर का उपयोग करके) लेकिन अगर मुझे सही याद है तो आप वेब फॉर्मवर्क को वेब फॉर्म नहीं बदल सकते हैं।

1

यह शायद अब तक अच्छी तरह से जाना जाता है, लेकिन अधिकांश आधुनिक ब्राउज़रों में CSS3 का अपना धागा है। आपको जावास्क्रिप्ट में ब्रेकपॉइंट सेट करने में सक्षम होना चाहिए और फिर भी अपना सीएसएस एनीमेशन चल रहा है। इस लिंक की जाँच करें कैसे शुद्ध सीएसएस के साथ एक स्प्राइट चेतन करने के लिए देखने के लिए:

http://blog.teamtreehouse.com/css-sprite-sheet-animations-steps

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