2012-04-18 13 views
5

मैं Bootstrap प्रोजेक्ट में उपयोग करने का प्रयास कर रहा हूं। मुझे लगता है कि आईई 8 में, फ्लोट ग्राफ अदृश्य है, और मैंने बूटस्ट्रैप द्वारा उपयोग की गई समस्या को HTML5 shim तक सीमित कर दिया है।बूटस्ट्रैप के साथ फ़्लोट का उपयोग करना: IE8 असंगतता?

यहां पूरा पृष्ठ है: यह basic Flot example प्लस HTML5 शिम है, और ग्राफ IE8 में अदृश्य है (यह क्रोम में ठीक है)।

यदि मैं HTML5 शिम रेखा को हटा देता हूं, तो ग्राफ IE8 में ठीक है। हालांकि, मुझे काम करने के लिए बूटस्ट्रैप शैलियों के लिए HTML5 शेम की आवश्यकता है (जब मैं बूटस्ट्रैप को वापस जोड़ता हूं - मैंने इस उदाहरण के प्रयोजनों के लिए संदर्भ हटा दिए हैं) - यदि यह वहां नहीं है तो बूटस्ट्रैप शैलियों खराब हो जाती हैं।

मैं क्या कर सकता हूं?

<!DOCTYPE html><html lang="en"> 
    <head> 
    <meta charset="utf-8"> 
    <title>Flot Examples</title> 
    <!--[if lt IE 9]> 
     <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> 
    <![endif]--> 
    <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="/scripts/plugins/excanvas.min.js"></script><![endif]--> 
    <script language="javascript" type="text/javascript" src="/scripts/jquery-1.7.1.min.js"></script> 
    <script language="javascript" type="text/javascript" src="/scripts/plugins/jquery.flot.js"></script> 
</head> 
<body> 
<div id="placeholder" style="width:100%;height:300px;"></div> 
<script type="text/javascript"> 
$(function() { 
    var d1 = []; 
    for (var i = 0; i < 14; i += 0.5) 
     d1.push([i, Math.sin(i)]); 
    var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]]; 
    var d3 = [[0, 12], [7, 12], null, [7, 2.5], [12, 2.5]]; 
    $.plot($("#placeholder"), [ d1, d2, d3 ]); 
}); 
</script> 
</body> 
</html> 
+0

ग्राफ आईई 7 और 8 में मेरे लिए ठीक है, हालांकि मुझे नहीं पता कि बूटस्ट्रैप पर कौन सा शिम शामिल है। क्या आप शिम के साथ एक डेमो पोस्ट कर सकते हैं और बूटस्ट्रैप को देखने के लिए शामिल किया गया है? –

उत्तर

7

html5shim और और excanvas कुछ हद तक एक ही बात मेरा अनुमान है कि करते हैं? excanvas html5 कैनवास तत्व emulates और html5shim कुछ अन्य जादू करता है कि मैं बहुत स्पष्ट नहीं हूँ। संक्षेप में, आप आईई < 9 और कैनवास तत्वों की बात करते समय इसे बंद करने के लिए html5shim बताना चाहते हैं। मैंने source में थोड़ा सा खोला और यह जानकारी पाई।

html5 वस्तु सामने आ रहा है, ताकि अधिक तत्वों shived जा सकता है और मौजूदा shiving iframes का पता लगाया जा सकता है।
स्क्रिप्ट शामिल html5 = {'तत्व': 'मार्क सेक्शन', 'shivCSS': झूठी, 'shivMethods': false} से पहले विकल्प बदला जा सकता है;

जल्द ही यह सभी तत्वों को हो जाएगा "शिव" को सूचीबद्ध करता है के बाद घ, इसलिए मैं इस के साथ एक समाधान के रूप में आया था:

<!--[if lt IE 9]> 
    <script type="text/javascript"> 
    var html5 = { 'elements': 'abbr article aside audio bdi data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video' }; 
    </script> 
    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 

मैं के रूप में स्रोत से बाहर ले लिया तत्वों में विशाल सूची ठीक है, केवल canvas हटा रहा है।

इसके अलावा, मैंने आपके सभी उदाहरणों का उपयोग किया और यह ठीक काम करने लग रहा था।

+0

यह बिल्कुल शानदार है, धन्यवाद! – Richard

+0

धन्यवाद रिचर्ड एंड रैली ... मेरे पास एक ही समस्या थी और इससे मुझे संदेह हुआ कि मुझे बहुत सारे डिबगिंग समय बचाए गए! – randlet

+0

आप इस उत्तर के लिए एक बियर के लायक हैं, आप पागल डीबगिंग का एक दिन पूरा करते हैं :) –

1

मैंने बूटस्ट्रैप और आईओ 8 में फ्लोट के साथ एक समस्या में भी भाग लिया है, लेकिन ओपी के सवाल से पूरी तरह से पहचान नहीं कर सका। भले ही मेरे लिए समस्या का समाधान किस प्रकार किया गया है, जैसा कि राइली के जवाब के समान है, मुझे यह समझने में एक घंटा लगा कि मुझे इसे काम करने के लिए क्या करना है।

सरल समाधान:

  1. Download excanvas.js (अगर यह आपकी flot पैकेज में नहीं है।)
  2. conditional comment जोड़े इससे पहले कि मैं सिर टैग में अन्य सभी जावास्क्रिप्ट फ़ाइलें लोड: <!--[if IE 8]> <script src="@Url.Content("~/Scripts/canvas/excanvas.min.js")" type="text/javascript"></script> <[endif]-->

काफी सरल, लेकिन: मुझे "ट्रैक पर त्रुटि" सक्रिय होने के साथ आईई में जावास्क्रिप्ट डिबग करके इस ट्रैक पर मिला। मुझे मुझे निम्न त्रुटि मिली: 'window.G_vmlCanvasManager' is null or not an object। गुगलिंग जो मुझे excanvas.js तक ले जाती है। और pronto, flot.js अचानक काम किया। मुझे नहीं पता कि इसका HTML5 एचटीएमएल के साथ क्या कुछ है, लेकिन यह काम करता है ... और राले के जवाब के मुकाबले आसान है।