【问题标题】:Which differences in javascript object creation syntax have I not understood? IE8 vs Chrome我不了解 javascript 对象创建语法的哪些差异? IE8 与 Chrome
【发布时间】:2014-06-20 11:24:54
【问题描述】:

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

可以通过定义作为参数传递的属性对象来创建HighCharts。这在 Chrome 中就像一个魅力,但我在 IE8 中遇到了问题(这里有回声吗?)

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

What are the most likely causes of Javascript errors in IE8?

IE8 errors when defining a Javascript object?

我定义属性对象的代码如下所述。我的错误总是在这个 sn-p 的第一行。但是,我在该行中找不到任何错误,所以我认为它必须在其他地方,并且只提到它的“根”。 entry 是一个带有一些参数的对象,用于在图表中填充标题和类似内容:

    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]
            ]
        }]
    };

编辑: 正如我在这篇文章中所说的那样:Strange behavior Highcharts pie chart in document mode IE8,我的对象表示法的主要结构是正确的。中间一定有一两行会导致问题。

【问题讨论】:

  • 您能否将实际的错误消息添加到您的问题中?
  • 只是看着这一点,IE8 不符合 ES5,所以Object.keys() 不可用(除非你拉入 es5-shim.js)跨度>

标签: javascript jquery internet-explorer-8 highcharts javascript-objects


【解决方案1】:

Object.keys 在 IE8 中不受支持。它是 ES5 规范,仅 IE9 及以上版本支持。您将需要一种不同的方式来获取该信息。

here...

【讨论】:

  • 啊!非常感谢你。我想我可能能够逐行提取并检查可支持性,但我非常感谢这种帮助。对我来说更快。我会找到另一种获取数据的方法。保证;)
  • 我会在五分钟内接受答案。
  • @KjetilNordin 查看this answer 了解更多关于如何获取对象长度的信息。
  • 这就是我喜欢 SO 的原因 :)
  • 得分。有用。在我看来,代码现在也更容易阅读。非常感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
  • 2017-11-26
  • 2021-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多