Mootools 1.2.5 Element.setStyle / Morph
Я недавно сделал скрипт Mootols для своего сайта. Используя Fx.Morph, я успешно создал эффекты, к которым стремился. Однако скрипт не работает в Internet Explorer 7 и 8 (отлично работает в 9, не удосужился проверить IE6). Я использую mootools 1.2.5.
Раскопав проблему, я мог бы выяснить следующее
- Все мои проблемы исходят от Fx.Morph, который вызывает setStyle с недопустимыми значениями
- Каким-то образом, при изменении высоты элемента от 0px до 160px, setStyle вызывается с отрицательным значением (например, -3px) <---- именно здесь IE выдает ошибку
Сейчас я "исправил" ошибку, выполнив следующее в функции setStyle ядра Mootools:
if((Browser.Engine.trident && value[0] == '-' && (property == 'height' || property == 'width')) || value[0] == 'N')
value='0px';
У кого-нибудь есть еще информация по этой проблеме или возникла похожая проблема?
1 ответ
Кажется, что Morph не волнует, собирается ли он вызвать setStyle с недопустимым комбинированием свойства / значения, а setStyle тоже не заботится, собирается ли он установить недопустимое значение для указанного свойства.
Имея это в виду, моя проблема возникла из-за эффекта, который я использовал. Я использовал что-то вроде "Bounce.easeIn" с элементом, который должен был изменять высоту от 0 до 160 пикселей. Затем Morph вызовет setStyle с отрицательными значениями.
В моем случае, установив эффект "линейный", он заработал так, как ожидалось.
По моему мнению, Morph должен "знать" о том, что он собирается делать, и предотвращать вызов setStyle с недопустимыми значениями. Element.setStyle также должен выдавать ошибку, когда он вызывается с невозможным свойством / значением, вместо того, чтобы позволить браузеру аварийно завершить работу / решить проблему. Я посмотрю, было ли это исправлено в 1.3, и открою тикет, если нет.