Uncaught RangeError

Geliştirmesini yürüttüğüm projemizde son zamanlarda, “Uncaught RangeError: Maximum call stack size exceeded” hatası almaya başlamıştım. Araştırmalarım sonucunda; sebebin Jquery üzerinde ki istek limitinin aşmasından kaynaklandığını farkettim. Bu hata, input alanlarına girilen metinlerin; tarayıcılarda donmalara, geç tepkime vermesine, kapanmasına neden oluyordu.

Bu hatalı kodu sizinle paylaşmak istiyorum. 🙂 Bu kısa betiğin amacı, form etiketi içinde, en son elemanda tab tuşunu engellemek.

$("form > *").filter(":input:last").live("keydown", function(aa){
if( aa.keyCode == 9){
aa.preventDefault();
return false;
}
});

Yukarıda kod ile, form etiketi içinde ki tüm nesneleri seçip, son olan nesneyi almışız. Buraya kadar bir problem yok. Fakat live ile bir event bağlandığınız zaman nesnelerin üzerindeki görevler farklı bağlanır. (Daha Fazla Bilgi İçin .live()). Herhangi bir input nesnesine bir şey yazmak istediğimizde ise, keydown eventları, Jquery üzerinde ki istek limitinin aşmasına neden oluyor.  Bunun sonucunda da tarayıcıların cevap verme sürelerine bağlı olarak, gecikmeler yaşanıyor.

This entry was posted in Jquery and tagged , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *