2012-10-05 20 views
1

我有一個下面的代碼在顏色框來顯示圖像:彩盒原型錯誤:無效陣列長度

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

CMS我的工作是一團糟。它有原型,jquery,jquery-ui等等。

在螢火蟲控制檯我獲得以下: 無效陣列長度 [打破此錯誤]
此[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();也沒有工作。

請幫忙!

+0

我知道這是兩年前,但我剛剛遇到了這個頁面上有jQuery 1.7.2和原型1.4。調用堆棧使得它看起來像jQuery的'dequeue'函數將控制權交給原型的'shift'函數。我不確定爲什麼。 – mwcz

回答

0

好吧,算出來。發生這種情況是因爲prototype.js擴展了原生的Array.prototype.shift函數,並且該擴展包含導致錯誤的錯誤。 jQuery在[2109行](https://github.com/jquery/jquery/blob/1.7.2/jquery.js#L2109)等地使用shift。那就是它爲我打破的地方。

我不認爲這會幫助用戶1722113,但希望它可以幫助某個人。

我只能想到兩種解決方案:(更好的解決方案一般來說,覆蓋本機的功能是壞的)

  1. 溝的prototype.js
  2. 莫名其妙地重新初始化Array.prototype.shift,或取而代之的是沒有破壞的實現