2015-03-06 2 views
6

window.devicePixelRatio вернет 1 или 2 в зависимости от того, использую ли я монитор или стандарт сетчатки. Если я перетащил окно между двумя мониторами, это свойство изменится. Есть ли способ, которым я могу иметь огонь слушателя, когда происходит изменение?window.devicePixelRatio change listener

+0

У меня нет двух мониторов, чтобы проверить это, но я думаю, что 'resize' событие будет срабатывать, когда' обновления window.devicePixelRatio'. – user2570380

+1

Просто попробовал, не стрелял. –

ответ

9

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

например:

window.matchMedia('screen and (min-resolution: 2dppx)'). 
    addListener(function(e) { 
     if (e.matches) { 
     /* devicePixelRatio >= 2 */ 
     } else { 
     /* devicePixelRatio < 2 */ 
     } 
    }); 

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

window.matchMedia поддерживается в IE10 + и all other modern browsers.

Ссылки: https://code.google.com/p/chromium/issues/detail?id=123694, MDN on min-resolution

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