Mootools 1.2.5 Element.setStyle / Morph - PullRequest
       24

Mootools 1.2.5 Element.setStyle / Morph

0 голосов
/ 08 декабря 2010

Я недавно сделал скрипт Mootols для своего сайта.Используя Fx.Morph, я успешно создал эффекты, к которым стремился.Однако скрипт не работает в Internet Explorer 7 и 8 (отлично работает в 9, не удосужился проверить IE6).Я использую mootools 1.2.5.

В поисках проблемы я мог бы выяснить следующее

  • Все мои проблемы исходят от Fx.Morph, который вызывает setStyle с недопустимыми значениями
  • Каким-то образом при изменении высоты элемента от 0px до 160px setStyle вызывается с отрицательным значением (например, -3px) <---- именно здесь IE выдает ошибку </li>

Пока что я «исправил» ошибку, выполнив в функции setStyle ядра Mootools следующее:

if((Browser.Engine.trident && value[0] == '-' && (property == 'height' || property == 'width')) || value[0] == 'N')
    value='0px';

У кого-нибудь есть дополнительная информация по этой проблеме или возникла аналогичная проблема?

1 Ответ

0 голосов
/ 08 декабря 2010

Кажется, что Morph не волнует, собирается ли он вызвать setStyle с недопустимым комбинированием свойства / значения, а setStyle тоже не заботится, собирается ли он установить недопустимое значение для указанного свойства.

Имея это в виду, моя проблема возникла из-за эффекта, который я использовал. Я использовал что-то вроде «Bounce.easeIn» с элементом, который должен был изменять высоту от 0 до 160 пикселей. Затем Morph вызовет setStyle с отрицательными значениями.

В моем случае, установив эффект «линейный», он заработал, как и ожидалось.

По моему мнению, Morph должен «знать» о том, что он собирается делать, и предотвращать вызов setStyle с недопустимыми значениями. Element.setStyle также должен выдавать ошибку, когда он вызывается с невозможным свойством / значением, вместо того, чтобы позволить браузеру аварийно завершить работу / решить проблему. Я посмотрю, было ли это исправлено в 1.3, и открою тикет, если нет.

...