मेरे पास डेटा की एक तालिका है जो जावास्क्रिप्ट के साथ गतिशील रूप से उत्पन्न होती है। प्रत्येक कुछ मिनट पृष्ठ अजाक्स अनुरोध को फायर करके, सर्वर से डेटा वापस प्राप्त करके और तालिका में डेटा को प्रतिस्थापित करके डेटा को रीफ्रेश करता है। यह सुंदर मानक है, और तालिका इस तरह लग रही समाप्त होता है:।आईई एक स्टाइलशीट परिवर्तन होने तक गतिशील सामग्री को अनुचित रूप से प्रस्तुत करता है
यह सिर्फ ठीक काम करता है अगर मैं तालिका खाली करने और धीरे-धीरे पंक्तियों में जोड़ डेटा उत्पन्न हालांकि, इस तालिका संभावित कर सकते हैं हजारों पंक्तियां हैं, और यह तालिका को उत्पन्न करने के लिए संभावित रूप से इतनी देर लग सकती है कि ब्राउज़र उपयोगकर्ता को "यह स्क्रिप्ट निष्पादित करने में बहुत अधिक समय ले रहा है" त्रुटियों को उत्पन्न करता है। तो मैंने टेबल पीढ़ी को टुकड़ों में तोड़कर और setInterval
का उपयोग करके एक समय में थोड़ा सा करके इसे ठीक कर दिया।
यह ठीक काम करता है, लेकिन क्योंकि तालिका पूरी तरह से उत्पन्न होने में थोड़ी देर लग सकती है, इसलिए मैंने चालाक होने और कुछ छद्म-डबल-बफरिंग करने की कोशिश की। मेरे पास एक दूसरी तालिका है जिसमें display
इसे छिपाने के लिए none
पर सेट है, और जब मैं तालिका को पुन: उत्पन्न करता हूं तो मैं एक समय में छिपी हुई तालिका में पंक्तियों को जोड़ता हूं। इस प्रकार मौजूदा डेटा तब तक उपयोगकर्ता के लिए दृश्यमान होता है जब तक कि तालिका पुन: पीढ़ी पूरी नहीं हो जाती है, उस बिंदु पर हम इसे एक बार में अपनी नई सामग्री के साथ बदल देते हैं।
मैं कोड
$("#loading_area tbody").children().appendTo($("#unplanned tbody").empty());
की निम्न पंक्ति के साथ अपने प्रतिस्थापन कर रहा हूँ यह फ़ायरफ़ॉक्स, सफ़ारी, और गूगल क्रोम पर ठीक काम करता है। लेकिन IE पर, मैं निम्नलिखित मिल: -
ये पंक्तियां वास्तव में खाली नहीं कर रहे हैं सामग्री वहाँ अगर मैं क्षैतिज पर्याप्त स्क्रॉल है:
ऐसा लगता है कि पहले कॉलम 55,000 पिक्सल चौड़ा है! और यहां वास्तव में अजीब हिस्सा है: जैसे ही मैं तालिका की शैली के बारे में कुछ भी बदलता हूं, सामग्री ठीक से प्रदर्शित होती है। इसलिए यदि मैं फ़ॉन्ट रंग को हरे रंग में बदलता हूं, तो IE तुरंत टेबल को फिर से प्रस्तुत करेगा।
लेकिन मैं सीधे परिवर्तन नहीं कर सकता। तो अगर मैं
$("#unplanned").css("color", "green");
तो यह ठीक से पुनः प्रस्तुत नहीं करता है; रंग बदलता है, लेकिन पहला कॉलम 55,000 पिक्सेल चौड़ा रहता है। लेकिन अगर मैं सीधे स्टाइलशीट
document.styleSheets[1].rules[3].style.color = "green";
पर परिवर्तन करता है तो यह तालिका को सही ढंग से प्रस्तुत करता है।
तो मैं इस एक यादृच्छिक शैली परिवर्तन करने, हर बार जब मैं तालिका बिछाने समाप्त कर रहा हूँ 1px
और 0px
के बीच विस्तृत/संक्षिप्त करें बटन के मार्जिन टॉगल करके द्वारा फिक्सिंग समाप्त हो गया है, और इस काम किया।
मेरी समस्या यह है कि जब मैं पृष्ठ मुद्रित करने का प्रयास करता हूं, तो पंक्तियां खाली दिखती हैं, क्योंकि पेज सामग्री को प्रिंटर को अनुचित रूप से प्रस्तुत किया जाता है।
तो मैं और अधिक चालबाजी करने की कोशिश कर रहा हूं, संभवत: बस उस तालिका को प्रदर्शित करने और अपने id
एस को स्वैप करने या जो कुछ भी काम करने के लिए इसे प्राप्त कर रहा है। मेरा सवाल है, यहाँ क्या चल रहा है?यह आईई में एक बग की तरह लगता है; मैं आईई 8 का उपयोग कर रहा हूं लेकिन यह वही बात आईई 6 और आईई 7 पर होती है। मैं भविष्य में इस गड्ढे में गिरने से बचना चाहता हूं, लेकिन मुझे यकीन नहीं है कि इसका क्या कारण है, इसलिए मुझे सच में यकीन नहीं है कि मुझे क्या टालना चाहिए। कोई भी प्रकाश जो इस पर बह सकता है, उसकी बहुत सराहना की जाएगी।
संपादित करें: कौन सी तालिका प्रदर्शित की जाती है स्वैपिंग को स्टाइलशीट हैक की आवश्यकता के बिना ब्राउज़र में प्रतिपादन समस्या दूर हो जाती है, लेकिन प्रिंटिंग के साथ समस्या अभी भी वहां है। वास्तव में, प्रिंटिंग समस्या तब भी होती है जब तालिका सीधे शो/छुपा या तत्व आंदोलन चालबाजी के साथ उत्पन्न होती है। इसलिए मैं निश्चित रूप से उलझन में हूं और यह सुनिश्चित नहीं करता कि मैं इस समस्या को दूर करने के लिए क्या कर सकता हूं। अगर मैं इसे समझ नहीं पा रहा हूं तो मुझे प्रिंटिंग के लिए एक अलग, स्थैतिक पृष्ठ बनाना पड़ सकता है।
मुझे यकीन है कि आपको इस पर एक जवाब मिलेगा - मुझे एक साल पहले कुछ हद तक समानता का सामना करना पड़ा। कभी नहीं पता चला कि क्या हो रहा था। मैं फिर से उपकरण का उपयोग करना चाहता था जो मैं पूरी तरह से stinkin 'आईई – Matt