您可以在此处找到有关尾随逗号的大量信息:数组和对象中的尾随逗号是规范的一部分吗?
这是关于"就在那里"的逗号。
[
{ title: "..", display: function() { return ".."; } },
{ title: "..", display: function() { return ".."; } },
{ title: "..", display: function() { return ".."; } }, // <--right there
]
我的问题是,现在的问题是,第三方工具生成带有尾随逗号的列表,而我无法访问此工具的源代码。我
<body>
my stuff
<!-- the folloging div with the javascript comes from the 3rd party -->
<div class="item"><script type="text/javascript">
$(document).ready(function() {
$.supersized({
// Functionality
slide_interval : 8000, // Length between transitions
transition : 1, // 0-None, 1-Fade, 2-Slide Top, 3-Slide Right, 4-Slide Bottom, 5-Slide Left, 6-Carousel Right, 7-Carousel Left
transition_speed : 400, // Speed of transition
fit_always : 0, //Prevents the image from being cropped by locking it at 100% width.
min_width : 600, //min-width of images
random : 0, //random img
vertical_center : 1, //vertical alignment
// Components
slide_links : 'false', // Individual links for each slide (Options: false, 'number', 'name', 'blank')
slides : [ // Slideshow Images
{image : 'image1.jpg', otherstuff: 'blah', moreotherstuff: 'lorem'},
{image : 'image2.jpg', otherstuff: 'blub', moreotherstuff: 'ipsum'},
]
});
});
</script></div>
现在我问我有没有办法让它在IE7/IE8中工作。
我现在看到的唯一方法(因为我无法编辑第 3 方并且无法在服务器上访问它)是:- 在没有该div的情况下给出特殊输出- 通过阿贾克斯请求正常端- 解析所有内容,获取此div,删除最后一个逗号并执行JavaScript
这真的不是我想要的方式。有没有其他方法可以解决这个问题?
IE7/IE8 将报告 1 个更大的数组长度,除非您修剪这些数组。
如果您知道所有接受来自第三方数据的JS方法,则可以为它们编写包装器。例如:
var removeEmpty = function(array){
var i, result = [];
for (i = 0; i < array.length; ++i){
if ( typeof array[i] != 'undefined' ){
result.push(array[i]);
}
}
return result;
};
$.supersized = (function() {
var origMethod = $.supersized;
return function(config) {
config.slides = removeEmpty(config.slides); // get rid of undefined data in array
return origMethod.call(this, config); // call original method
};
}());
不,没有办法让那些尾随逗号在IE中工作。这根本做不到;它是浏览器JavaScript解析器的基本部分。
这是一个非常众所周知的问题,这意味着您的第三方工具非常明显地存在故障,并且显然没有经过正确测试。我不知道你从哪里得到的,但如果你付钱,如果我是你,我会大声抱怨。
如果你真的无法在源头上处理问题,那么你剩下的唯一选择就是在生成的代码进入IE之前修复它。说起来容易做起来难。根据生成的代码的复杂性,如果它简单且可预测,您可能能够为其编写正则表达式,但如果它生成的代码很复杂或复杂程度不同,我怀疑您可能会遇到麻烦这个想法。