Показать сообщение отдельно
  #15 (permalink)  
Старый 23.12.2008, 22:40
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

И опять makeArray

Доступна новая версия jQuery 1.3b1, в ней метод makeArray притерпел некоторые изменения и стал выглядеть следующим образом:
var makeArray = function(array, results) {
	array = Array.prototype.slice.call( array );

	if ( results ) {
		results.push.apply( results, array );
		return results;
	}
	
	return array;
};

// Perform a simple check to determine if the browser is capable of
// converting a NodeList to an array using builtin methods.
try {
	Array.prototype.slice.call( document.documentElement.childNodes );

// Provide a fallback method if it does not work
} catch(e){
	makeArray = function(array, results) {
		var ret = results || [];

		if ( array instanceof Array ) {
			Array.prototype.push.apply( ret, array );
		} else {
			if ( typeof array.length === "number" ) {
				for ( var i = 0, l = array.length; i < l; i++ ) {
					ret.push( array[i] );
				}
			} else {
				for ( var i = 0; array[i]; i++ ) {
					ret.push( array[i] );
				}
			}
		}

		return ret;
	};
}


То есть они проверяют не IE это или другой браузер, а возможность выполнить:
Array.prototype.slice.call( document.documentElement.childNodes );

Может ли это значить, что есть еще браузеры, кроме IE, которые будут выдавать ошибку при таком способе?
Ответить с цитированием