2009-12-31 4 views
2

$ (окно) .resize (Foo())JQuery окно изменения размера, пожалуйста, помогите

обнаружить, когда окно resizeing ...

Foo() работает нормально, но это срабатывает только Foo() после того, как размер изменен, так что это не изменение размера.

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

+2

'Foo' не должны иметь круглые скобки. Обычно вам нужно передать ссылку на функцию, а не выполнить ее и передать результат, что происходит, когда вы включаете круглые скобки. Конечно, это может быть просто ошибка транскрипции ... и это не ответ на ваш вопрос, очевидно. – tvanfosson

+0

Я не уверен, что понимаю, что означает u – Val

+0

Когда вы выполняете функцию с помощью круглых скобок, вы вызываете функцию в этой точке. То, что вы хотите, это просто '$ (window) .resize (foo)' или '$ (window) .resize (function() {...}) ', который предоставляет ссылку на функцию, которая будет выполнена позже, до метода изменения размера. – tvanfosson

ответ

3

Вы не можете сделать то, что вы хотите, слушая окно resize событий.

Проверьте карты Google или читателя, попробуйте изменить размер окна по вертикали. Обратите внимание, что эти приложения демонстрируют одинаковое поведение.

Посмотрите внимательнее на свой CSS. Я считаю, что иногда CSS может делать некоторые очень удивительные вещи. Если вы разместите некоторые примеры HTML и CSS, которые являются типичными для вас, мы сможем разработать решение.

Если вы абсолютно не можете дождаться, пока пользователь закончит изменение размера окна, вы можете опросить document.scrollWidth и document.scrollHeight через короткий промежуток времени. Всякий раз, когда они меняются, вызывайте свой код изменения размера. Обратите внимание, что опрос этих свойств может быть довольно дорогостоящим. Я рекомендую против этого, но это решит проблему.

Если вы используете Internet Explorer, в зависимости от версии вам необходимо использовать document.documentElement.scrollWidth или document.body.scrollWidth (и аналогичный для scrollWidth).

Firefox 3.6 будет поддерживать события для определения, когда document.scrollWidth и document.scrollHeight изменения, хотя, похоже, это будет нестандартным:

https://developer.mozilla.org/en/DOM/Detecting_document_width_and_height_changes

0

Это заставляет меня задаться вопросом, почему вы хотели бы сделать такую ​​вещь. Если бы вы могли быть конкретными, возможно, я мог бы предложить вам решение CSS?

+0

Я использую его, поэтому я могу изменить высоту класса. больше похоже на жидкую концепцию и css can not делают это, потому что есть разные факторы, которые это испортили. – Val

2

Событие изменения размера, начатое после того, как окно закончило изменение размера, в значительной степени похоже на то, что происходит. Я не думаю, что ты сможешь что-нибудь сделать.

2

Из документации JQuery, вы, кажется, испытывает поведение Firefox когда вы действительно после IE поведения.

В зависимости от реализации, размер событие может быть отправлено непрерывно, как изменение размеров в процессе (типичное поведение в Internet Explorer и WebKit-браузеры, такие как Safari и Chrome), или только один раз в конце изменения размера (типичное поведение в Firefox). http://api.jquery.com/resize/

Интересно, что на той же странице, является комментарием к плагин, который может сделать поведение кросс-браузер (я не смотрел на это)

Смежные вопросы