9

के तहत चार्ट प्रतिपादन नहीं कर रहा है। मैं पाइथन के साथ गतिशील रूप से चार्ट बनाने के लिए उच्चतर चार्ट का उपयोग कर रहा हूं। सभी ठीक काम करते हैं, हालांकि मुझे IE8 के तहत cannot read property "0" of undefined अपवाद मिलता है। दुर्भाग्य से मेरा ग्राहक यह आईई 8 के तहत भी काम करना चाहता है। तो यहाँ मुख्य कार्य के कोड:HighCharts.js IE8

function generateChart(series) { 
    var chart = new Highcharts.Chart({ 
     chart: { 
      renderTo: 'company_chart', 
     }, 
     xAxis: { 
      type: "datetime", 
     }, 
     yAxis: [{ 
      title: { 
       text: "T1", 
       }, 
      },{ 
      title: { 
       text: "T2", 
       }, 
      }, 
      opposite: true, 
     }], 
     plotOptions: { 
      series: { shadow: false }, 
      column: { shadow: false, }, 
     }, 
     series: series 
    }); 
); 

अब मेरी ajax अनुरोध कुछ डेटा वापस आती है और मैं इस तरह चर में संग्रहीत:

chart_data = [ 
    { 
     type: "spline", 
     color: '#ff0000', 
     yAxis: 0, 
     data: dataT1, 
    }, 
    { 
     type: "column", 
     color: '#0000ff', 
     yAxis: 1, 
     data: dataT2, 
    } 
]; 

कि मैं generateChart(chart_data); फोन करने के बाद। चर के प्रारूप dataT1 और dataT2 ठीक है, क्योंकि यह हर दूसरे ब्राउज़र के अंतर्गत काम करता है। उदाहरण dataT1 के लिए कुछ ऐसा दिखाई देगा:

dataT1 = [ [1325721600000,1.64], 
      [1325635200000,1.64], 
      [1325548800000,1.7], 
      [1325462400000,1.7],]; 

लेकिन फिर भी अपवाद IE8 के तहत फेंक दिया है। इसे ठीक करने का कोई तरीका?

+0

असल में मैं हाईस्टॉक का उपयोग कर रहा हूं (लेकिन यहां मैं केवल हाईचर्ट्स का उपयोग करता हूं) और अपवाद को highstock.js स्क्रिप्ट में फेंक दिया जाता है। ऐसा लगता है कि यह 'chart_data [0] .डेटा [0] 'पढ़ने की कोशिश कर रहा है और यह अपवाद फेंकता है। मैं निश्चित रूप से नहीं कह सकता, क्योंकि मैंने minified संस्करण का उपयोग किया था। अजीब बात यह है कि जब मैं इसे डीबग करता हूं 'chart_data [0] .डेटा' शून्य 'है लेकिन 'chart_data [1] .डेटा नहीं है। लेकिन सभी एग्रीमेंट ठीक हैं (वे अन्य ब्राउज़रों के तहत काम करते हैं)। – freakish

+0

मेरा उत्तर अपडेट देखें। समस्या आपके डेटा सरणी परिभाषाओं में खतरनाक अल्पविरामों के साथ है। – Pointy

उत्तर

17

उन खतरनाक कॉमा इंटरनेट एक्सप्लोरर में त्रुटियां पैदा कर रहे हैं। उनसे छुटकारा पाएं।

यहाँ एक उदाहरण है: इस तरह एक त्रुटि होने की

chart: { 
     renderTo: 'company_chart', // <--- get rid of that comma 
    }, 

इंटरनेट एक्सप्लोरर एक वस्तु शाब्दिक के अंत में एक अल्पविराम समझता है। आपको वास्तव में "पृष्ठ पर त्रुटियों" चेतावनी को देखना चाहिए, लेकिन त्रुटि आमतौर पर ऐसा कुछ है जो इस वास्तविक मूल कारण को इंगित नहीं करता है।

संपादित करें — अच्छी तरह से आईई 8 इसके बारे में पसंद नहीं है, हालांकि आईई 7 है।

संपादित फिरहालांकि, IE8 समझता है कि वह जिसका अर्थ है कि वहाँ एक अतिरिक्त तत्व होना चाहिए के रूप में अपने डेटा सरणियों में पिछले झूलने अल्पविराम! दूसरे शब्दों में:

[1, 2, 3,].length 

फ़ायरफ़ॉक्स/क्रोम/सफारी में 3 है, लेकिन यह इंटरनेट एक्सप्लोरर में है। जब आप उस तत्व तक पहुंचने का प्रयास करते हैं, तो ब्राउज़र आपको undefined देता है।

+2

मैंने इसके बारे में भी सोचा, लेकिन ऐसा लगता है कि यह IE8 और बाद में तय किया गया है, क्योंकि त्वरित डीबग से पता चलता है कि यह कोड कोई अपवाद नहीं फेंकता है और ठीक काम करता है। और यहां तक ​​कि अगर ऐसा हुआ, तो मुझे अलग अपवाद मिलेगा, है ना? – freakish

+0

वैसे यह ** निश्चित रूप से ** संस्करण 8 से पहले IE के लिए गलत है, और मुझे आईई 8 में काम करने के बारे में संदेह है। हालांकि मैं कोशिश करूँगा। – Pointy

+0

ठीक है हाँ आप सही हैं, इसके लिए hallelujah। आईई 8 दिमाग में प्रतीत नहीं होता है। हालांकि, अगर मैं आईई 7 मोड में आईई 8 फ्लिप करता हूं, तो यह शिकायत करता है। – Pointy