Комментарии 25
Похвально, что решились побороть эту проблему!
Ну или как минимум выяснить в чем причина!
Ну или как минимум выяснить в чем причина!
Так может попробовать пропихнуть этот «патч» в jQuery?
Не совсем в тему, но все же, с анимацией в IE есть еще одна проблема:
Если анимировать с использованием прозрачности элемент, содержащий текст и при этом у пользователя включен ClearType, то по окончании анимации (на самом деле, в процессе тоже, но это не так заметно) текст становится «грубым», т.е. таким, каким он был бы без ClearType. Проблема заключается в том, что jQuery «забывает» удалить атрибут «filter» по окончании анимации (проблема filter:opacity + transparent png в IE хорошо известна).
Решается прмерно следующим образом (с учетом того, что пользовательскую callback-функцию, если она есть, тоже нужно выполнить):
function cleartypeFix() {
if (typeof this.style != 'object')
return;
if (typeof this.style.removeAttribute != 'object') // почему тут не 'function' я объяснить не могу, но работает во всех версиях только так
return;
this.style.removeAttribute(«filter»);
}
$.fn._animate = $.fn.animate;
$.fn.animate = function() {
var args = $.makeArray(arguments);
if (typeof arguments[arguments.length — 1] == 'function') {
var baseCallback = args.pop();
var callback = function() {
baseCallback();
cleartypeFix.apply(this);
}
args.push(callback);
} else
args.push(cleartypeFix);
return $.fn._animate.apply(this, args);
}
Если анимировать с использованием прозрачности элемент, содержащий текст и при этом у пользователя включен ClearType, то по окончании анимации (на самом деле, в процессе тоже, но это не так заметно) текст становится «грубым», т.е. таким, каким он был бы без ClearType. Проблема заключается в том, что jQuery «забывает» удалить атрибут «filter» по окончании анимации (проблема filter:opacity + transparent png в IE хорошо известна).
Решается прмерно следующим образом (с учетом того, что пользовательскую callback-функцию, если она есть, тоже нужно выполнить):
function cleartypeFix() {
if (typeof this.style != 'object')
return;
if (typeof this.style.removeAttribute != 'object') // почему тут не 'function' я объяснить не могу, но работает во всех версиях только так
return;
this.style.removeAttribute(«filter»);
}
$.fn._animate = $.fn.animate;
$.fn.animate = function() {
var args = $.makeArray(arguments);
if (typeof arguments[arguments.length — 1] == 'function') {
var baseCallback = args.pop();
var callback = function() {
baseCallback();
cleartypeFix.apply(this);
}
args.push(callback);
} else
args.push(cleartypeFix);
return $.fn._animate.apply(this, args);
}
Вы молодец, что разобрались и написали репорт. Дальше я конечно не прав, и все такое, но что это делает на хабре? Я почему-то не видел здесь статей людей которые делают действительно большие изменения, а вы просто исправили небольшой баг.
«Вчера отписался пока тишина» конечно шикарно, на все изменения команда видимо должна реагировать максимум через 5 минут.
«Вчера отписался пока тишина» конечно шикарно, на все изменения команда видимо должна реагировать максимум через 5 минут.
Да, забыл совсем. Пиписька на аваторке — это мерзко.
Удивительно, большенство не согласно даже с этим утверждением :)
Если я не прав, то что это по вашему:
Если я не прав, то что это по вашему:
Статуя Давида, не иначе :)
А почему бы нет?
Как минимум эта статья показывает, что нужно копать и разбираться.
Я никогда не понимал людей, которые воспринимают такие вещи (некорректное поведение программы/библиотеки) как должное. Человек не поленился, и в итоге повысил себе экспириенс и улучшил jQuery. Отличный пример некоторым программистам.
Как минимум эта статья показывает, что нужно копать и разбираться.
Я никогда не понимал людей, которые воспринимают такие вещи (некорректное поведение программы/библиотеки) как должное. Человек не поленился, и в итоге повысил себе экспириенс и улучшил jQuery. Отличный пример некоторым программистам.
Мне почему-то кажется, что это первый багфикс автора в каком-то проекте. Мне, как человеку сделавшему пару-тройку, кажется, что писать об этом дико. Я могу представить чувства людей, которые на дню их делают по 5 штук. Ну и вы можете представить что будет, если о каждом таком исправлении будет топик.
Дело в том, что этот баг давно не давал мне покоя в различных проектах. И если бы мне кто то показал решение раньше, я был бы очень признателен. Поэтому, думаю, данный пост поможет тем, кто с сталкивался с проблемой ранее и, как и я, не находил ответа.
Вы сделали пару-тройку багфиксов для jQuery? Тогда респект. С удовольствием бы почитал о них на хабре.
Что? Не для jQuery? Для самописной CMS? Ну тогда вы правильно делаете, что не пишете об этом :)
Что? Не для jQuery? Для самописной CMS? Ну тогда вы правильно делаете, что не пишете об этом :)
Я на Хабр как раз за такими статьями и хожу. Вы ещё спросите, что это делает на главной? :)
ханжа detected.
Долбанный IE.
сегодня столкнулся с проблемой IE8 выпадает в дебагер скриптов от такой строчки:
$("#someid").animate({ width:«20px»}, 1000);
Ругается на неправильый параметр… может я что не так написал?
Пока переписал на такое:
$("#someid").css(«width», «20px»);
$("#someid").animate({ width:«20px»}, 1000);
Ругается на неправильый параметр… может я что не так написал?
Пока переписал на такое:
$("#someid").css(«width», «20px»);
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Анимация в Internet Explorer