2015-03-06 7 views
6

window.devicePixelRatio gibt 1 oder 2 zurück, je nachdem, ob ich meinen Retina Monitor oder Standard verwende. Wenn ich das Fenster zwischen den beiden Monitoren verschiebe, ändert sich diese Eigenschaft. Gibt es einen Weg, wie ich einen Zuhörer feuern lassen kann, wenn die Veränderung eintritt?window.devicePixelRatio ändern Listener

+0

ich das nicht zwei Monitore zu testen, aber ich denke, die 'resize' Veranstaltung wird als' window.devicePixelRatio' Updates abgefeuert werden. – user2570380

+1

Ich habe es gerade versucht, feuert nicht. –

Antwort

9

Sie können eine Medienabfrage mit matchMedia hören, die Ihnen sagt, wenn das devicePixelRatio eine bestimmte Grenze überschreitet (leider nicht für willkürliche Maßstabänderungen).

zB:

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

Der Hörer wird aufgerufen, wenn Sie ein Fenster zwischen Monitoren ziehen, und beim Stecken oder einen externen Nicht-Retina-Monitor ziehen (wenn es das Fenster verursacht von einer Netzhaut zu bewegen Nicht-Retina-Bildschirm oder umgekehrt).

window.matchMedia wird in IE10 + und all other modern browsers unterstützt.

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