Адекватный $( window ).resize на десктопе и мобильных

Есть функция, должна выполняться при ресайзе окна, страница одна и та же для десктопов и мобильных, адаптив.

Знаю, что есть событие onorientationchange, но как это все адекватно совместить на одной странице?

Дело в том, что на мобильном устройстве функция установленная на $( window ).resize() выполняется при простом скролле.

Нужно как-то детектить мобильные и использовать в этом случае onorientationchange, а на десктопах $( window ).resize(), но как детектить мобильные, если мобильное устройство может быть любой ширины и десктоп тоже любой?

Как вариант в resize() может стоять проверка:

if screen_width > screen_heigth повернутое положение
if screen_height > screen_width то портретное,

или/так же можно смотреть window.orientation === 0, 90, 180,…

на памяти проблемы с onorientationchange.

Я бы пробовал такой путь: навесить один обработчик на все события (resize, orientation change) и иже с ними, и внутри уже проверять а изменилась ли ориентация. Готового решения не смог найти за период поверхностного гугления. Когда решали такую-же задачу (на уровне фреймверка, не приложения), событие смены ориентации выносилось в отдельный модуль, на события которого завязывались все, кому нужно было что-то выполнять на событие поворота устройства.

Насчет библиотек - это событие есть в jquery mobile: orientationchange event | jQuery Mobile API Documentation

Также может быть полезно определение моб или не моб девайс -

if( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent) ) {
 // some code..
}

больше вариантов при поисковом запросе “detect if mobile javascript”