1

我有以下代码在颜色框中显示图像:

<script type="text/javascript">
(function($){
$('a.gallery').colorbox({rel:'gal'});
})(jQuery);
</script>

我正在研究的 CMS 一团糟。它有原型、jquery、jquery-ui 等等。

在 Firebug 控制台中,我得到以下信息:无效的数组长度 [Break On This Error]
this[i] = this[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(); 也没有用。

请帮忙!

4

1 回答 1

0

好的,想通了。发生这种情况是因为prototype.js 扩展了(以及许多其他)本机Array.prototype.shift函数,并且该扩展包含导致错误的错误。jQueryshift在 [line 2109])( https://github.com/jquery/jquery/blob/1.7.2/jquery.js#L2109 ) 等地方使用。这就是我崩溃的地方。

我不希望这会对 user1722113 有所帮助,但希望它可以帮助某人。

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

  1. 抛弃prototype.js(更好的解决方案。一般来说,覆盖本机函数是不好的)
  2. 以某种方式重新初始化 Array.prototype.shift,或者用没有损坏的实现替换它
于 2014-12-08T16:39:32.260 回答