我不了解javascript对象创建语法中的哪些差异?IE8与铬
我正在使用Highcharts,以图形方式显示数据。我之所以选择这个库,是因为它与IE8和更新版本的Google Chrome兼容,因为它根据可支持性以VML或SVG呈现图表 HighCharts可以通过定义作为参数传递的properties对象来创建。这在Chrome中很有魅力,但在IE8中我遇到了麻烦(这里有回声吗?) 我怀疑错误在于在javascript中定义对象时,这两种浏览器的语法支持不同。下面的两个问题是我找到的最接近信息,但它们没有解决我的实际问题 我定义properties对象的代码如下所述。我的错误总是在这段代码的第一行。然而,我在这行中找不到任何错误,所以我认为它必须在其他地方,并且只引用它的“根”<代码>条目是一个带有几个参数的对象,用于在图表中填充标题和类似内容:我不了解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对
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看一看如何获得物体长度的更多信息。这就是我如此喜欢的原因:)得分。它起作用了。在我看来,代码现在也更容易阅读。谢谢。