我不了解javascript对象创建语法中的哪些差异?IE8与铬

我不了解javascript对象创建语法中的哪些差异?IE8与铬,javascript,jquery,internet-explorer-8,highcharts,javascript-objects,Javascript,Jquery,Internet Explorer 8,Highcharts,Javascript Objects,我正在使用Highcharts,以图形方式显示数据。我之所以选择这个库,是因为它与IE8和更新版本的Google Chrome兼容,因为它根据可支持性以VML或SVG呈现图表 HighCharts可以通过定义作为参数传递的properties对象来创建。这在Chrome中很有魅力,但在IE8中我遇到了麻烦(这里有回声吗?) 我怀疑错误在于在javascript中定义对象时,这两种浏览器的语法支持不同。下面的两个问题是我找到的最接近信息,但它们没有解决我的实际问题 我定义properties对

我正在使用Highcharts,以图形方式显示数据。我之所以选择这个库,是因为它与IE8和更新版本的Google Chrome兼容,因为它根据可支持性以VML或SVG呈现图表

HighCharts可以通过定义作为参数传递的properties对象来创建。这在Chrome中很有魅力,但在IE8中我遇到了麻烦(这里有回声吗?)

我怀疑错误在于在javascript中定义对象时,这两种浏览器的语法支持不同。下面的两个问题是我找到的最接近信息,但它们没有解决我的实际问题

我定义properties对象的代码如下所述。我的错误总是在这段代码的第一行。然而,我在这行中找不到任何错误,所以我认为它必须在其他地方,并且只引用它的“根”<代码>条目是一个带有几个参数的对象,用于在图表中填充标题和类似内容:

    var chartOptions = {
        chart: {
            renderTo: "piecontainer"+index,
            plotBackgroundColor: null,
            plotBorderWidth: 0,
            plotShadow: false
        },
        title: {
            text: entry.title + '<br/><br/>' + entry.path + '<br/><br/>Total: ' + Object.keys(entry.testMap).length,
            align: 'center',
            verticalAlign: 'middle',
            y: 50
        },
        tooltip: {
            pointFormat: '{series.name}: <b> {point.y} ({point.percentage:.1f}%)</b>'
        },     

        legend: {
            width: 415,
            enabled: true,
            useHTML: true,
            labelFormatter: function() {
                return '<span>' + this.name + ': ' + this.y + '<t/></span>';
            }, 
            itemDistance: 20
        },

        credits: {
            enabled: false
        },

        plotOptions: {
            pie: {
                size: '100%',
                animation: false,
                 dataLabels: {
                        enabled: false                              
                    },
                    showInLegend: true,
                startAngle: -90,
                endAngle: 90,
                center: ['50%', '75%']
            }
        },
        series: [{
            type: 'pie',
            name: 'Test Cases',
            innerSize: '50%',
            data: [
                ['Passed',  1],
                ['Not Completed', 1],
                ['Failed', 1],
                ['No Run', 1],
                ['N/A', 1], 
                ['Blocked', 1],
                ['Incorrect Database Value', 1]
            ]
        }]
    };
var图表选项={
图表:{
renderTo:“piecontainer”+索引,
plotBackgroundColor:null,
绘图边框宽度:0,
plotShadow:false
},
标题:{
text:entry.title+'

'+entry.path+'

Total:'+Object.keys(entry.testMap).length, 对齐:'居中', 垂直排列:'中间', y:50 }, 工具提示:{ pointFormat:“{series.name}:{point.y}({point.percentage:.1f}%)” }, 图例:{ 宽度:415, 启用:对, 是的, labelFormatter:function(){ 返回“+this.name+”:“+this.y+”; }, 项目距离:20 }, 学分:{ 已启用:false }, 打印选项:{ 馅饼:{ 大小:“100%”, 动画:错, 数据标签:{ 已启用:false }, showInLegend:是的, startAngle:-90, 端角:90, 中间:['50%,'75%'] } }, 系列:[{ 键入“pie”, 名称:'测试用例', 内部尺寸:“50%”, 数据:[ [‘通过’,1], [‘未完成’,1], ['Failed',1], ['No Run',1], [N/A',1], ['Blocked',1], ['不正确的数据库值',1] ] }] };
编辑:
正如我在这篇文章中所说的,我的对象表示法的主要结构是正确的。中间必须有一行或两行,这是导致问题的原因。

<代码>对象。IE8中不支持键< /代码>。它是ES5规范,仅受IE9及以上版本的支持。你需要一种不同的方式来获取这些信息


看…

你能在你的问题中添加实际的错误信息吗?看看这个,IE8不符合ES5标准,所以
Object.keys()
不可用(除非你正在使用ES5 shim.js)啊!非常感谢你。我想我可能能够逐行提取并检查可支持性,但我非常感谢您的帮助。对我来说快多了。我会找到另一种方法来获取数据。保证;)我将在五分钟内接受答案。@KjetilNordin看一看如何获得物体长度的更多信息。这就是我如此喜欢的原因:)得分。它起作用了。在我看来,代码现在也更容易阅读。谢谢。