Функция jQuery не будет работать в Chrome: / - PullRequest
2 голосов
/ 17 сентября 2010

Может ли кто-нибудь помочь мне с этой проблемой?Код zip здесь: (ссылка отключена)

Я сделал все допустимым, но Chrome все еще вычисляет высоту элементов совершенно неправильно(9 в каждые 10 раз ...) ...


Ну, технически это так.

$(document).ready(function() {
            function resizeIt() {
                var extDiv = $('#externalWrapper').height();
                var wrapper1 = $('#wrapper1').height();
                var wrapper2 = $('#wrapper2').height();
                var wrapper3 = $('#wrapper3').height();

                $('#wrapper1-mid').css({'height':extDiv - ($('#wrapper1-top').height()+$('#wrapper1-bottom').height())-4});
                $('#wrapper2').css({'marginTop':extDiv-wrapper2});
                $('#wrapper3-mid').css({'height':extDiv -($('#wrapper3-top').height()+$('#wrapper3-bottom').height())+1});

                if($('ul#related-linklist > li').size() > 15) {
                    $('#spacer').attr({'height':(wrapper2-250)});
                    $('#product-image').css({
                        'marginTop':0,
                        'marginLeft':0
                    });
                }
            }
            resizeIt();
        });

Так вот мой код, в Chrome он не изменяет размерполя / высоты правильно на всех.Но в Safari работает нормально.

IE / Firefox не затрагиваются.

Ответы [ 3 ]

2 голосов
/ 17 сентября 2010

Обновление: вы правы, не нужно добавлять 'px' в конец значений.Но я обновил код ниже, чтобы использовать window.load, так как думаю, что это может быть проблемой.

При использовании css вы должны включить px в конце.Кроме того, у вас есть атрибут height, который должен быть css (это не проверено):

$(window).load(function() {
        function resizeIt() {
            var extDiv = $('#externalWrapper').height();
            var wrapper1 = $('#wrapper1').height();
            var wrapper2 = $('#wrapper2').height();
            var wrapper3 = $('#wrapper3').height();

            $('#wrapper1-mid').css({'height':extDiv - ($('#wrapper1-top').height()+$('#wrapper1-bottom').height())-4 + 'px' });
            $('#wrapper2').css({'marginTop':extDiv-wrapper2 + 'px' });
            $('#wrapper3-mid').css({'height':extDiv -($('#wrapper3-top').height()+$('#wrapper3-bottom').height())+1 + 'px' });

            if($('ul#related-linklist > li').size() > 15) {
                $('#spacer').css({'height':(wrapper2-250) + 'px' });
                $('#product-image').css({
                    'marginTop':0,
                    'marginLeft':0
                });
            }
        }
        resizeIt();
    });
0 голосов
/ 17 сентября 2010

Я заметил, что в Chrome иногда что-то не так, и это, скорее всего, из-за движка рендеринга WebKit. Что я делал, чтобы противостоять этому в прошлом, так это просто прослушал Chrome и добавил пользовательский класс для любых затронутых объектов («chrome» или «webkit» или что-то еще), а затем написал код, специфичный для этих объектов.

Эта идея по общему признанию отстой , но это приемлемый обходной путь / хак, если вам нужна эта работа СЕЙЧАС.

0 голосов
/ 17 сентября 2010

HTML-код в вашей ссылке на jsFiddle - беспорядок, который может быть причиной вашей проблемы.

У вас есть несколько незамкнутых <img> элементов, дополнительный <html> вверху инесколько элементов с одинаковым идентификатором.У вас также есть <div>, вложенный в <span>, что недопустимо.

http://infohound.net/tidy/ - полезный инструмент для проверки и очистки HTML.

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