2015-03-06 9 views
6

window.devicePixelRatio zwróci 1 lub 2 w zależności od tego, czy używam monitora siatkówki czy standardu. Jeśli przeciągnę okno pomiędzy dwoma monitorami, ta właściwość się zmieni. Czy istnieje sposób, w jaki mogę wywołać pożar słuchacza, gdy nastąpi zmiana?window.devicePixelRatio zmiana słuchacza

+0

Nie mam dwa monitory do testowania tego, ale myślę, że 'resize' zdarzenie zostanie zwolniony, gdy' aktualizacje window.devicePixelRatio'. – user2570380

+1

Po prostu próbowałem, nie strzelałem. –

Odpowiedz

9

Możesz wysłuchać zapytania o media z numerem matchMedia, które powie ci, kiedy urządzenie PixelRatio przekroczy pewną barierę (niestety nie dla arbitralnych zmian skali).

np

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

Słuchacz zostanie wywołana po przeciągnięciu okna między monitorami, a po podłączeniu lub odłączeniu zewnętrznego monitora bez siatkówki (jeśli powoduje to okno, aby przejść od siatkówki do ekran bez siatkówki lub odwrotnie).

window.matchMedia jest obsługiwany w IE10 + i all other modern browsers.

Referencje: https://code.google.com/p/chromium/issues/detail?id=123694, MDN on min-resolution

Powiązane problemy