Jquery document.ready событие запускается до того, как мой стиль CSS элемента загружается в IE8 - PullRequest
0 голосов
/ 05 сентября 2011

У меня есть следующий код на странице мая

var x = parseInt($(this).css('backgroundPosition').split(" ")[0]);

Все отлично работает в IE9, FF и Chrome, даже в Iphone, но IE8 и IE7 выдают ошибку. Я отладил проблему, заключающуюся в том, что метод .css не может разрешить свойство.

Похоже, что функция document.ready, которую я использую в нижней части страницы, загружает этот код до того, как css применяется к элементу, в этом контексте это элемент таблицы td

Любые идеи о том, как элегантно решить эту проблему

Спасибо

Ответы [ 2 ]

0 голосов
/ 05 сентября 2011

Я получаю undefined для свойства backgroundPositionbackground-position), используя jQuery.

Похоже, вы можете получить доступ к X и Y в background-position в IE, если вы ссылаетеськаждому по отдельности:

<html>
<head>
<style type="text/css">
body {
    background: url(http://www.gravatar.com/avatar/e1122386990776c6c39a08e9f5fe5648?s=128&d=identicon&r=PG);
    background-repeat: no-repeat;
    background-position: 100px 500px;
}
</style>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.js"></script>
<script type="text/javascript">
</script>
</head>
<body>
<p>Test of doc.ready and bg pos in IE8/9</p>
<script>
$(document).ready(function(){
    if ($.browser.msie) {
        console.log('X: ' + $('body').css('backgroundPositionX'));
        console.log('Y: ' + $('body').css('backgroundPositionY'));
    } else {
        console.log('X: ' + parseInt($('body').css('backgroundPosition').split(" ")[0]));
        console.log('Y: ' + parseInt($('body').css('backgroundPosition').split(" ")[1]));
    }
});
</script>
</body>
</html>

В IE7 / 8 (с использованием консоли IE9):

LOG: X: 100px 
LOG: Y: 500px 

http://jfcoder.com/test/bgpos.html

Однако, похоже, что это не такработает в Firefox (ничего не выводится).Поэтому я настроил код для определения IE.

0 голосов
/ 05 сентября 2011

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

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