Какой правильный (современный) метод для подключения к событию изменения размера окна работает в Firefox, WebKit и Internet Explorer?
И можете ли вы включить / выключить обе полосы прокрутки?
javascript
jquery
cross-browser
resize
BuddyJoe
источник
источник
window.dispatchEvent(new Event('resize'));
stackoverflow.com/questions/1818474/…Ответы:
JQuery имеет встроенный метод для этого:
Ради отзывчивости пользовательского интерфейса вы можете рассмотреть возможность использования setTimeout для вызова кода только через некоторое количество миллисекунд, как показано в следующем примере, вдохновленном этим :
источник
$('.button').on({ click: function(){ /* your code */ $(window).trigger('resize') })
источник
Вот не-jQuery способ подключения к событию изменения размера:
Работает на всех современных браузерах. Это ничего не душит для вас. Вот пример этого в действии.
источник
Извините, что вызвал старый поток, но если кто-то не хочет использовать jQuery, вы можете использовать это:
источник
Так как вы открыты для jQuery, этот плагин, кажется, делает свое дело.
источник
Используя jQuery 1.9.1, я только что узнал, что, хотя технически идентично) *, это не работает в IE10 (но в Firefox):
в то время как это работало в обоих браузерах:
Edit :)
* На самом деле технически не идентичны, как отмечено и объяснено в комментариях WraithKenny и Henry Blyth .
источник
.resize()
К.bind('resize')
? Или добавить анонимную функцию , я имею в виду , что это второе.)adjustSize
метод теряет контекстthis
, в то время как второй вызовCmsContent.adjustSize()
заповедникиthis
, то естьthis === CmsContent
. ЕслиCmsContent
экземпляр требуется вadjustSize
методе, то первый случай завершится неудачей. Второй случай будет работать для любого вида вызова функции, поэтому рекомендуется всегда передавать анонимную функцию.jQuery
предоставляет$(window).resize()
функцию по умолчанию:источник
Я считаю плагин jQuery «событие изменения размера jQuery» лучшим решением для этого, поскольку он заботится о регулировании события, чтобы оно работало одинаково во всех браузерах. Это похоже на ответ Эндрюса, но лучше, поскольку вы можете привязать событие изменения размера к определенным элементам / селекторам, а также ко всему окну. Это открывает новые возможности для написания чистого кода.
Плагин доступен здесь
Существуют проблемы с производительностью, если вы добавляете много слушателей, но для большинства случаев использования это идеально.
источник
Я думаю, что вы должны добавить дополнительный контроль к этому:
источник
надеюсь, это поможет в JQuery
сначала определите функцию, если существует существующая функция, перейдите к следующему шагу.
изменить размер браузера использовать, как эти.
источник
Помимо упомянутых функций изменения размера окна, важно понимать, что события изменения размера запускаются много, если используются без удаления событий.
У Пола Айриша есть отличная функция, которая очень сильно ослабляет вызовы изменения размера. Очень рекомендуется использовать. Работает кросс-браузер. На днях протестировал в IE8 и все было хорошо.
http://www.paulirish.com/2009/throttled-smartresize-jquery-event-handler/
Не забудьте проверить демо, чтобы увидеть разницу.
Вот функция для полноты.
источник