Страница переходит после $ («селектор»). Html («некоторый контент») в Google Chrome - PullRequest
1 голос
/ 08 июня 2011

Когда я изменяю содержимое какого-либо элемента внизу страницы, страница прокручивается до начала этого элемента. Например:

$container.html($container.html());

Это работает хорошо, без прокрутки страниц, в FF. Кто-то раньше решал такую ​​проблему?

UDP:

Я попробовал это с первого ответа:

$ container.css ( 'высота', $ container.height () + 'точек'); $ Container.html ($ container.html ()); $ Container.css ( 'высота', 'авто');

Но переход на 3 строки вызывает переходы на страницы, поэтому, если просто установить высоту контейнера - это работает хорошо Но у меня высота контеста может быть разной, она загружается с сервера.

Теперь у меня есть идея найти высоту после вставки содержимого и установить ее вместо 'auto': Но Chrome возвращает высоту (innerHeight, outerHeight) родительского контейнера:

var $c = this.options.container;
$c.css('height', $c.height()+'px');
$c.html(data.content || '');
var $child = $c.children();
console.log($child.height(), $child.innerHeight(), $child.outerHeight());
$c.css('height', $child.height()+'px');

В FF возвращенная высота верна.

Ответы [ 3 ]

2 голосов
/ 08 июня 2011

Если я рискну догадаться, это будет означать, что хром перекрашивается быстрее, и контейнер сжимается, когда пустой, прежде чем заполняться чем-то другим. Вы можете попытаться закрепить высоту до определенного значения, изменить содержимое, а затем снова установить для него значение auto (если это значение по умолчанию). Примерно так (не проверено):

$container.css('height',$container.height()+'px');
$container.html($container.html());
$container.css('height','auto');
0 голосов
/ 09 июня 2011

Есть решение для поиска.

var $c = this.options.container;

//fix Chrome page jumping
$.browser.webkit && $c.css('height', $c.height()+'px');

$c.html(data.content || '');

//fix Chrome page jumping
if ($.browser.webkit) {
    setTimeout(function(){
        $c.css('height', $c.children().height()+'px');
    }, 1);
};
0 голосов
/ 08 июня 2011

Я обнаружил, что это обычно происходит, потому что я забыл возвратить false в обработчике кликов, например, w / jQuery:

$ ('a'). Click (function () { $ Container.html ($ container.html ()); вернуть ложь; });

Хотя, ваш $ container.html ($ container.html ()); мне кажется странным.

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