2011-09-01 6 views
24

मेरे पास श्रेणियों का एक पृष्ठ है, जब उपयोगकर्ता एक क्लिक करता है, उस श्रेणी के अंतर्गत आइटम एक jQuery अजाक्स कॉल के माध्यम से लोड होते हैं, एक तालिका में, और केवल तत्व में फंस जाते हैं श्रेणी के नीचे। ऐसा लगता है कि हालांकि, लोड की गई तालिका में एक या दो पंक्तियों का एक यादृच्छिक स्तंभ पर डेटा ऑफसेट होगा। मैंने आईई 9, एफएफ 3.6 और क्रोम 13. में इसका परीक्षण किया है। यह केवल आईई 9 में होता है। टैब्यूलर डेटा पूरी तरह से स्वरूपित है - मैंने अनुरोधों को रोकने के लिए फिडलर का उपयोग किया है और फिर कच्चे एचटीएमएल को देखा है, और इसके साथ कुछ भी गलत नहीं है।आईई 9 टेबल में यादृच्छिक पंक्तियां हैं जो यादृच्छिक कॉलम पर ऑफसेट हैं

साइट एएसपी.नेट एमवीसी 3 में बनाई गई थी। अजाक्स अनुरोध के माध्यम से लौटाई गई तालिका एक रेजर आंशिक दृश्य देता है। दुर्भाग्यवश, आईई में काम करना है। मैं वास्तव में उम्मीद कर रहा हूं कि किसी के पास इसके लिए स्पष्टीकरण है। Notice the offset on the second column और एक और: Notice the offset on the second to last column

संपादित करें [2012/03/25]:

यहाँ एक उदाहरण है इस आवेदन मेरे हाथ छोड़ दिया है, तो मैं सत्यापित करने के लिए जो जवाब का काम में असमर्थ हूँ। एडम यंगर्स को http://social.msdn.microsoft.com/Forums/pl/iewebdevelopment/thread/e6f49d52-ec3f-47c5-802e-b80d1a58ed39 पर पोस्ट किया गया लिंक कुछ संभावित समाधान प्रतीत होता था। पिछले अनुभव से, मैं इन विकल्पों में पहले की कोशिश करेंगे ..

  1. पेज के सिर तत्व को < मेटा http-समतुल्य = "एक्स-UA- संगत" सामग्री = "आईई = 8"/> जोड़ा जा रहा है।
  2. तालिका कक्षों के बीच किसी भी सफेद-स्थान को हटाने का प्रयास करें। उदाहरण के लिए। "</टीडी > < टीडी >", अगले सेल को एक नई लाइन पर शुरू करने के बजाय। (इसने अतीत में मेरे लिए अजीब दूरी के मुद्दों का कारण बना दिया है)
+0

यदि आप बहुत लंबे हैं, तो आपको तालिका के परिणामी एचटीएमएल को पोस्ट करना चाहिए, केवल समस्याग्रस्त पंक्ति के परिणामस्वरूप कोड पोस्ट करें। –

+0

मुझे एक ही समस्या है और मैं यह जोड़ना चाहता हूं कि हर बार जब मैं एक ही पृष्ठ को फिर से लोड करता हूं तो यह एक अलग पंक्ति और कॉलम में होता है। एचटीएमएल के साथ कुछ भी गलत नहीं है। –

+0

मुझे एक ही समस्या है। मैं टेबल के HTML पर गया हूं और इसमें कुछ भी गलत नहीं है। मेरी तालिका में फॉर्म तत्व भी शामिल हैं। मुझे यकीन नहीं है कि यह तकनीकी रूप से अर्थात् सही है या नहीं। –

उत्तर

24

समस्या सफेद रिक्ति के साथ प्रतीत होती है।

मैं http://social.msdn.microsoft.com/Forums/en-AU/iewebdevelopment/thread/28d78780-c95c-4c35-9695-237ebb912d90

पर इस उत्तर पाया एचटीएमएल आप इस तरह रेगुलर एक्सप्रेशन के उपयोग AJAX कॉल से प्राप्त बदलें।

var expr = new RegExp('>[ \t\r\n\v\f]*<', 'g'); 
tableHtml = tableHtml.replace(expr, '><'); 
+3

अन्य मामले में तालिका के HTML एचटीएमएल चर को कैसे प्राप्त और अपडेट करने के बारे में स्पष्ट नहीं हैं, यहां कोड है जो मेरे लिए काम करता है: var expr = new RegExp ('> [\ t \ r \ n \ v \ f] * <', 'g '); var replacement = $ ('cal-table')। Html()। प्रतिस्थापित करें (expr, '><'); $ ('कैल-टेबल')। एचटीएमएल (प्रतिस्थापन); $ ('। Cal-table')। TableScroll ({ऊंचाई: 540, चौड़ाई: tableWidth}); – Winger

+0

यहां कुछ और चर्चा है: http://social.msdn.microsoft.com/Forums/en-US/iewebdevelopment/thread/e6f49d52-ec3f-47c5-802e-b80d1a58ed39 – Mike

+0

ऊपर दिए गए समाधान मूल रूप से काम करते थे, लेकिन किया मेरे सभी मामलों को कवर करें। मैं यादृच्छिक रूप से रिक्त स्थान प्राप्त कर रहा था। मैंने जो समाधान पोस्ट किया है, वह मेरे मुद्दों को हल करता है। –

1

मैं एक और पोस्ट Remove whitespace and line breaks between HTML elements using jQuery जहां एक स्क्रिप्ट जो ऊपर एक से अधिक प्रभावी था वहाँ था से एक जवाब का इस्तेमाल किया। मैंने इसे हल करने के लिए answer का उपयोग किया, लेकिन मैं इसे एक पूर्ण उत्तर के लिए दोहरा दूंगा।

jQuery.fn.htmlClean = function() { 
    this.contents().filter(function() { 
     if (this.nodeType != 3) { 
      $(this).htmlClean(); 
      return false; 
     } 
     else { 
      return !/\S/.test(this.nodeValue); 
     } 
    }).remove(); 
    return this; 
} 

अंत में, यह केवल एक अंतरिम समाधान है और माइक्रोसॉफ्ट द्वारा IE9/10 में तय किया जाना चाहिए।

+0

मुझे यकीन नहीं है कि आपने कुछ प्रदर्शन परीक्षण किया है लेकिन यह समाधान बड़ी तालिकाओं के लिए रास्ता अधिक है। – Ravi

+1

मैं मानता हूं कि यह एक बहुत बड़ी मेज पर एक बड़ा प्रदर्शन हिट है। यह समस्या का समाधान है। एमएस के मुद्दे को हल करने के लिए एक बेहतर समाधान होगा। –

0

@ जोहान स्ट्रॉडम दिया गया समाधान काम करता है लेकिन यदि आप हर तत्व को छूना नहीं चाहते हैं और केवल टेबल सामग्री मॉडल पर ध्यान केंद्रित नहीं करना चाहते हैं।

यहां मेरे लीड द्वारा काम पर एक बेहतर रेगेक्स तैयार किया गया है।

if (jQuery.browser.msie && jQuery.browser.version === '9.0') 
{ 
    data = data.replace(/>\s+(?=<\/?(t|c)[hardfob])/gm,'>'); 
} 

सभी तालिका, कैप्शन, colgroup, col, tbody, ठेड, tfoot, टीआर, टीडी, वें तत्वों को कवर।

0

क्रुमेल्ज़ के सुझावों के बाद, <meta http-equiv="X-UA-Compatible" content="IE=8" /> जोड़ना समस्या दूर हो जाती है।

मेरी विशिष्ट समस्या के लिए, मेरे पास एक jquery datepicker और नियमित लेबल है जो IE9 में सही ढंग से प्रस्तुत करता है लेकिन एक jquery AJAX कॉल के बाद डेटा में स्थानांतरित हो जाएगा। उपर्युक्त टैग डालने से यह मेरे लिए ठीक हो जाता है। यह एक कोशिश के योग्य है। सौभाग्य।

0

व्हाइट स्पेसिंग भी मेरा मुद्दा था, हालांकि मेरी स्थिति थोड़ा अलग थी। इस धागे ने मुझे इस मुद्दे को ठीक करने में मदद की (सभी को धन्यवाद)।

मेरी तालिका ठीक होगी तो पोस्टबैक के बाद कहीं भी यादृच्छिक रूप से कॉलम जोड़ें।

से पहले: (i के बारे में 10 अन्य लोगों कि एक ही तरह से इस समस्या का कारण नहीं कर रहे हैं स्वरूपित हैं, लेकिन इस एक था)

<tr> 
    <th class="width125px th-left-borders"> 
     Intangibles 
    </th> 
    <td><asp:TextBox ID="txtCustFinancial_Intangibles" runat="server" 
      CssClass="textToLabel widthFull textbox_number_align"></asp:TextBox> 
    </td> 
</tr> 

के बाद: (लाइन से हटाया यहाँ मेरी कोड के पहले और बाद है टूट जाता है जो आम तौर पर ठीक है, लेकिन किसी कारण से यह कोई मुद्दा पैदा कर रहा था)

<tr> 
    <th class="width125px th-left-borders">Intangibles</th> 
    <td><asp:TextBox ID="txtCustFinancial_Intangibles" runat="server" 
      CssClass="textToLabel widthFull textbox_number_align"></asp:TextBox></td> 
</tr> 

उम्मीद है कि इस व्यक्ति के रूप में अच्छी तरह से मदद मिलेगी।

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