Opera и FireFox не могут прочитать значение поворота CSS3 - PullRequest
0 голосов
/ 10 июня 2011

Я не могу прочитать значение поворота для преобразования CSS3 в:

  • Опера 9,62
  • Опера 10,51
  • FireFox 4.01

Отлично работает в IE, Chrome и Safari, но не в этих трех выше. Вот источник:

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="jquery-1.6.1.min.js"></script>
    <style>
        div {
            -webkit-transform:     rotate(-5deg);
            -moz-transform:        rotate(-5deg);
            -o-transform:        rotate(-5deg);
            -ms-transform:        rotate(-5deg);
            transform:            rotate(-5deg);
            border: 1px solid black;
        }
    </style>
    <script type="text/javascript">
        $(document).ready(function () {

            // tries to read the CSS rotate data
            // starts by reading -webkit-transform, if it
            // fails then read -moz-transform and so on
            var getRotation = function ($e) {
                var value = $e.css('-webkit-transform');
                if (value === undefined) {
                    value = $e.css('-moz-transform');
                    if (value === undefined) {
                        value = $e.css('-o-transform');
                        if (value === undefined) {
                            value = $e.css('-ms-transform');
                            if (value === undefined) {
                                value = $e.css('transform');
                            }
                        }
                    }
                }
                return value === undefined? '' : value;
            };

            var returnValue = getRotation($("div"));
            alert(returnValue === ''?
                "Failed to get rotation info!" : 
                "Got it: " + returnValue);
        });
    </script>
</head>
<body>
    <div>rotated</div>
</body>
</html>

живой пример на jsfiddle здесь

Итак, я хочу использовать jquery css() для чтения угла поворота, но странно, что Opera 10.51 и FF 4.01 (и ниже) не могут его прочитать, хотя div отображается правильно с эффектом вращения.

Это похоже на ошибку jQuery или ошибку браузера. У кого-нибудь есть обходной путь для Opera / FF?

Если вы получаете предупреждение «Понял», значит, оно работает.

Спасибо за помощь.

1 Ответ

0 голосов
/ 11 июня 2011

Хорошо, я понял проблему.Проблема была в моем коде, который не проверял должным образом возвращаемые значения из css() getter.

До того, как у меня было:

if (value === undefined) {...

Проблема была исправлена ​​путем изменения вышеуказанногоусловие:

if (notDefined(value)) {...

, где notDefined - это функция

var notDefined = function(value) {
    return value == null || value == undefined || value == "" || value == "none";
} 

Чтобы быть кросс-браузерным, мне нужно сравнить все эти 3 случая, а не только неопределенные.

Вы можете увидеть обновление здесь

Оно работает для всех последних версий IE (также IE7 и 8), Firefox, Safari, Chrome и Opera.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...