Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 17.04.2011, 15:29
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Неудобно, но обёртка ещё хуже тем, что надо помнить, какие методы нативные, а какие кастомные. Или же реализовывать кастомный алиас для каждого нативного метода. Все три способа хреновые, я выбрал для себя меньшее из зол.

Лучший вариант -- расширение прототипа -- недоступен в IE.
Ответить с цитированием
  #12 (permalink)  
Старый 17.04.2011, 15:56
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Kolyaj
недоступен в IE
в каком смысле?
Ответить с цитированием
  #13 (permalink)  
Старый 17.04.2011, 16:16
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

В прямом. У DOM элементов в IE нет прототипов.
Ответить с цитированием
  #14 (permalink)  
Старый 17.04.2011, 16:47
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от Kolyaj
В прямом. У DOM элементов в IE нет прототипов.
хм. невнимательно прочитал
Однако в IE8 можно уже и так:

//Element.getElementsByClassName IE8+
function getElementsByClass(getClass){
	if(document.querySelectorAll) {
		return document.querySelectorAll("." + getClass);
	}
	else if(document.getElementsByClassName) {
		return document.getElementsByClassName(getClass);
	}
	else {
		var list = document.getElementsByTagName('*'), i = list.length,
		classArray = getClass.split(/\s+/), result = [];
		while(i--) {
			if(list[i].className.search('\\b' + classArray + '\\b') != -1) {
				result.push(list[i]);
			}
		}
		return result;
	}
};
HTMLDocument.prototype.getElementsByClassName = Element.prototype.getElementsByClassName = getElementsByClass;

оффтоп
вообще интересно что Node.ELEMENT_NODE/Node.TEXT_NODE в IE9 по прежнему не определяются, зато 10-ю очень хорошо расширили (только что проверил там есть поддержка!)

Последний раз редактировалось monolithed, 17.04.2011 в 17:33.
Ответить с цитированием
  #15 (permalink)  
Старый 17.04.2011, 17:28
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

var newOffset= getElementOffset('#xxx') + 10
setElementOffset( '#xxx', new Offset )

-- vs --

var el= $('#xxx')
var newOffset= el.offset() + 10
el.offset( newOffset )

===

не задалбывает каждой функции передавать элемент первым параметром?
__________________
.ня
Ответить с цитированием
  #16 (permalink)  
Старый 17.04.2011, 17:30
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

monolithed, а для ие7- можно задать одноразовый экспрешн, который добавит нужные методы при добавлении элемента в дом.
__________________
.ня
Ответить с цитированием
  #17 (permalink)  
Старый 17.04.2011, 17:58
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от tenshi
не задалбывает каждой функции передавать элемент первым параметром?
Не задалбывает перед каждой функцией писать имя переменной с точкой?
Ответить с цитированием
  #18 (permalink)  
Старый 17.04.2011, 19:18
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от Kolyaj
Неудобно
хорошо, почему?

Сообщение от Kolyaj
но обёртка ещё хуже тем, что надо помнить, какие методы нативные, а какие кастомные. Или же реализовывать кастомный алиас для каждого нативного метода. Все три способа хреновые, я выбрал для себя меньшее из зол.

Лучший вариант -- расширение прототипа -- недоступен в IE.
теоретически мне кажется лучшим вариант с оберткой с алиасами. А какой третий вариант? Первый - получать ссылку на элемент и вызывать нативный метод, второй - делать алисы в обертке

http://blogs.msdn.com/b/ie/archive/2...-download.aspx
по-моему они решили запомниться этими рыбками. И, кстати, быстро у них появилось preview следующей версии

Сообщение от tenshi
monolithed, а для ие7- можно задать одноразовый экспрешн, который добавит нужные методы при добавлении элемента в дом.
а можешь кодом продемонстрировать?

Сообщение от Kolyaj
Не задалбывает перед каждой функцией писать имя переменной с точкой?
мне кажется, твой вариант - это жертва ради производительности, к которой ты привык
Ответить с цитированием
  #19 (permalink)  
Старый 17.04.2011, 20:36
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от x-yuri
хорошо, почему?
Это я про своё решение, если что

Проблема: добавить методы для работы с DOM-элементами.

Хорошее решение: расширение прототипа. Не будь IE, проблем бы не было.

Есть три удовлетворительных решения:
1. Обёртка (jQuery, ExtJS).
2. Добавление методов прямо в DOM-элементы (PrototypeJS, раньше по крайней мере).
3. Обычные функции, принимающие первым аргументом DOM-элемент.

Я для себя выбрал третий вариант.

Сообщение от x-yuri
мне кажется, твой вариант - это жертва ради производительности, к которой ты привык
Производительность во всех случаях одинаковая, а вот сжимаемость увеличивается. Но больше меня коробит требование предобработки DOM-элементов, чтобы обёртку создать.
Ответить с цитированием
  #20 (permalink)  
Старый 17.04.2011, 21:05
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

Сообщение от Kolyaj
Но больше меня коробит требование предобработки DOM-элементов, чтобы обёртку создать.
а что за предобработка?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Механизм работы скрипта на сайте МДМ Банка tzhe jQuery 1 29.11.2010 21:36
Ищу библиотеки для работы с 3D Бобр Общие вопросы Javascript 3 06.08.2010 17:02
Логика работы ajax-php runekill AJAX и COMET 0 17.03.2010 15:07
Поиск работы JavaScript staff-base Работа 9 12.03.2010 19:06
Модуль для работы с модулями JSprog Ваши сайты и скрипты 29 02.09.2009 13:31