JQuery, IE и Animate - PullRequest
       13

JQuery, IE и Animate

1 голос
/ 27 января 2010

Я работал над сайтом, который очень интенсивно использует jQuery в Chrome и Firefox. Теперь дело дошло до того, что его открывают в IE и видят, как WTF IE работает с сайтом.

У меня проблема при нажатии кнопки сворачивания (вверху слева) в одном из окон на странице. Элемент должен анимироваться в углу и изменять непрозрачность, однако он просто изменяет непрозрачность и не перемещается. Это часть функции animate, включенной ниже, поэтому проблема с animate в IE?

IE просто выдает ошибку «Недопустимый аргумент - строка 142 - jquery.js» (фактический исходный файл jQuery) в отладчике.

Сайт находится по адресу http://pegfm.pezcuckow.com/, а JS находится по адресу http://pegfm.pezcuckow.com/js/main.js

Строка, которую IE ссылается на (142), - согласно отладчику в IE8

a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit;

Эта функция вызывается при нажатии кнопки минимизации (внутри уже)

/* Minimize Windows */
    function windowm(id) {
        var left, right, top, bottom;
        if(id == "chat") { 
            shown = chat;
            if(chat==1) { chat = 3; } else { chat = 1; }
        } else if(id == "rplayed") { 
            shown = rplayed;
            if(rplayed==1) { rplayed = 3; } else { rplayed = 1; }
        } else if(id == "info") { 
            shown = info;
            if(info==1) { info = 3; } else { info = 1; }
        } else if(id == "player") { 
            shown = player;
            if(player==1) { player = 3; } else { player = 1; }
        }

        wid = "#" + id;
        bid = "#b_" + id;
        if(shown==3) { dir = "+"; opacity = 1; } else { dir = "-"; opacity = 0.1; }
        amt = '=70%';
        if(id == "chat") { 
            right = dir + amt;
            top = dir + amt;
        } else if(id == "rplayed") { 
            left = dir + amt;
            top = dir + amt;
        } else if(id == "info") { 
            right = dir + amt;
            bottom = dir + amt;
        } else if(id == "player") { 
            left = dir + amt;
            bottom = dir + amt;
        }
        $(wid).animate({
            opacity: opacity,
            left: left,
            top: top,
            bottom: bottom,
            right: right
        }, 200);
        $(bid).fadeToggle("fast");
    }

    $("#info .minus").click(function(){windowm('info')});
    $("#chat .minus").click(function(){windowm('chat')});
    $("#rplayed .minus").click(function(){windowm('rplayed')});
    $("#player .minus").click(function(){windowm('player')});

CSS для двух окон показан ниже

.window {
    position: absolute;
    width: 394px;
    height: 262px;
    background-image:url(../images/bg_window.png);
    z-index:3;
    display: none;
}
#rplayed {
    left: 50%;
    top: 50%;
    margin-left: -197px;
    margin-top: -131px;
    z-index: 3;
    overflow:hidden;
}
#info {
    bottom: 50%;
    right: 50%; 
    margin-right: -197px;
    margin-bottom: -131px;
    z-index: 2; 
}

Ответы [ 2 ]

2 голосов
/ 27 января 2010

Попробуйте изменить эту строку на:

a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now||0):a.now)+a.unit;
0 голосов
/ 07 апреля 2010

изменить на:

a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now=0):a.now=0)+a.unit;
...