0

Hello I am trying to run the Google Chart Quick Start and it won't render in IE8.

I can see that the Google Chart does create some IE funky markup however nothing is displayed.

The guide is located on https://developers.google.com/chart/interactive/docs/quick_start

Is there some extra config required to get this to work in IE8?

IanWatson
  • 1,649
  • 2
  • 27
  • 49

2 Answers2

0

According to the Google Charts documentation there are sometimes problems in Internet Explorer 8 and earlier, for two reasons:

  1. IE8 doesn't support SVG, so Charts fails over into VML, which is more limited.
  2. IE8's JavaScript doesn't allow trailing commas in lists.

In order to get it to work you need to add the vml namespace and add a specific css behaviours

<!--[if lte IE 8 ]>
<script type="text/javascript">
    document.namespaces.add('vml', 'urn:schemas-microsoft-com:vml');
    document.createStyleSheet().cssText =
    'vml\\:fill, vml\\:path, vml\\:shape, vml\\:stroke' +
    '{ behavior:url(#default#VML); display: inline-block; } ';
</script>
<![endif]-->

I have double checked and the example below is working in IE8 on Windows 7. However, it does initially display the warning "To help protect your security, Internet Explorer has restricted this webpage from running scripts or ActiveX controls that could access your computer." Only after allowing the blocked content the pie chart is rendered.

<html>

<head>
  <!--Load the AJAX API-->
  <!--[if lte IE 8 ]>
 <script type="text/javascript">
  document.namespaces.add('vml', 'urn:schemas-microsoft-com:vml');
  document.createStyleSheet().cssText =
  'vml\\:fill, vml\\:path, vml\\:shape, vml\\:stroke' +
  '{ behavior:url(#default#VML); display: inline-block; } ';
 </script>
 <![endif]-->
  <script type="text/javascript" src="https://www.google.com/jsapi"></script>
  <script type="text/javascript">
    // Load the Visualization API and the piechart package.
    google.load('visualization', '1.0', {
      'packages': ['corechart']
    });

     // Set a callback to run when the Google Visualization API is loaded.
    google.setOnLoadCallback(drawChart);

     // Callback that creates and populates a data table,
     // instantiates the pie chart, passes in the data and
     // draws it.
    function drawChart() {

      // Create the data table.
      var data = new google.visualization.DataTable();
      data.addColumn('string', 'Topping');
      data.addColumn('number', 'Slices');
      data.addRows([
        ['Mushrooms', 3],
        ['Onions', 1],
        ['Olives', 1],
        ['Zucchini', 1],
        ['Pepperoni', 2]
      ]);

      // Set chart options
      var options = {
        'title': 'How Much Pizza I Ate Last Night',
        'width': 400,
        'height': 300
      };

      // Instantiate and draw our chart, passing in some options.
      var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
      chart.draw(data, options);
    }
  </script>
</head>

<body>
  <!--Div that will hold the pie chart-->
  <div id="chart_div"></div>
</body>

</html>
Alex
  • 21,273
  • 10
  • 61
  • 73
  • Adding your code above has still not solved the issue. – IanWatson Mar 27 '15 at 12:09
  • I will have look into it on a VM with IE8 to see if I can resolve it. – Alex Mar 27 '15 at 13:01
  • The pie chart is working on IE8 on Windows 7, it does this play the warning: "To help protect your security, Internet Explorer has restricted this webpage from running scripts or ActiveX controls that could access your computer." Are ActiveX controls enabled in your IE instance ? – Alex Mar 28 '15 at 23:23
  • On initial load I allow the ActiveX content but still does not work – IanWatson Mar 30 '15 at 08:25
  • What operating system are you running this on ? Windows 7 or Windows XP? – Alex Mar 30 '15 at 12:02
  • Windows 7, IE 11 acting as a IE 8 emulator. – IanWatson Mar 30 '15 at 21:22
  • The IE8 emulator in IE11 is not actually really very good for testing compatibility, see http://stackoverflow.com/questions/17871124/how-to-bring-back-browser-mode-in-ie11/17877416#17877416. If you really want to test for compatibility with any given version of IE, you need to test in a real copy of that IE version. MS provide free VMs on http://modern.ie/ for you to use for this purpose. – Alex Mar 31 '15 at 08:45
0

IE8 will fall back to use VML; from their gallery (https://developers.google.com/chart/interactive/docs/gallery):

These charts are based on pure HTML5/SVG technology (adopting VML for old IE versions)

After a little digging, it looks like VML won't just work, so try putting this at the beginning of your js (or maybe better yet, as an inline script at the top of your html):

document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', "#default#VML");

This person had the same issue: How do I get VML working in standards mode?

Community
  • 1
  • 1
wholevinski
  • 3,658
  • 17
  • 23
  • Do you have any console errors? Anything else to go on? – wholevinski Mar 27 '15 at 11:23
  • No errors on console, my code matches exactly the code shown in the guide. – IanWatson Mar 27 '15 at 11:24
  • Tested on multiple computers now too so can rule out a individual PC. – IanWatson Mar 27 '15 at 11:35
  • I was able to get it running by changing IE's browser mode, not for real IE8. Can you run navigator.userAgent in your console and paste the output here? – wholevinski Mar 27 '15 at 11:49
  • "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/7.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)" Very strange... why would a IE8 emulator give back a Mozilla/4.0 user agent? – IanWatson Mar 27 '15 at 11:57
  • This explains each part: http://www.useragentstring.com/Internet%20Explorer8.0_id_17042.php It's not important for this problem though...I just wanted to see if anything jumped out (and it didn't). – wholevinski Mar 27 '15 at 12:00
  • Are you using an IE8 emulator ? Did you try the same example on a VM with IE8 ? Microsoft provides these on https://www.modern.ie/en-gb/virtualization-tools and that is where I downloaded my VM from. – Alex Mar 30 '15 at 12:00