Colorbox原型错误:数组长度无效

时间:2012-10-05 06:16:35

标签: jquery prototype colorbox

我有以下代码在colorbox中显示图像:

<script type="text/javascript">
(function($){
$('a.gallery').colorbox({rel:'gal'});
})(jQuery);
</script>
我正在研究的CMS是一团糟。 它有原型,jquery,jquery-ui等等。

在Firebug控制台中,我得到以下信息: 数组长度无效 [打破此错误]
这[i] =这[i + 1];

prototype.js第387行(版本1.4.0) 这是:

shift: function() {
var result = this[0];
for (var i = 0; i < this.length - 1; i++)
this[i] = this[i + 1];
this.length--;
return result;
}, 

我得到的只是一个褪色的背景和颜色框角落加载(角落不会移除)。

jQuery.noConflict();也没用。

请帮忙!

1 个答案:

答案 0 :(得分:0)

好的,想通了。它正在发生,因为prototype.js扩展了(在许多其他之中)本机Array.prototype.shift函数,并且该扩展包含导致错误的错误。 jQuery在[第2109行](https://github.com/jquery/jquery/blob/1.7.2/jquery.js#L2109)和其他地方使用shift。这就是它让我失望的地方。

我不认为这会对用户1722113有所帮助,但希望它可以帮助某人下线。

我只能想到两个解决方案:

  1. ditch prototype.js(更好的解决方案。一般来说,重写本机功能很糟糕)
  2. 以某种方式重新初始化Array.prototype.shift,或者将其替换为未破坏的实现