Agon
30-05-2007 22:31 Array.prototype.заподло
Столкнулся сегодня с довольно неприятной проблемой, когда потребовалось "поженить" на одной странице два разных JS скрипта, причем оба использовали собственный фреймворк. Разумеется вместе работать отказались, ссылаясь на туманную ошибку "Unknown method" в том месте, где никаких методов небыло даже рядом. Разгадка нашлась случайно, после пяти часов тыка, гугления и просто мата. Один из скриптов имел наглость добавить к прототипу класса Array несколько функций. Ниже, другой скрипт перебирал элементы своего массива при помощи конструкции "for (i in arr) a = arr[i]". Что характерно, Файрфокс в таком случае работает коректно, а вот IE пытается обработать в качестве элемента массива и все добавленные в прототип функции. И, разумеется, ломается с идиотстким сообщением "Unknown metod". Лечилось в моем случае элементарно, путем замены на "for (i=0;i<arr.length;i++)". Можно счмтать, что мне повезло, элементы массива шли по порядку. В противном случае была бы полная жопа - переписывать чужие JS - не самое любимое мое занятие.
Группы: [ Работа ] [ Софт ]
Закрыть