2016-02-08 16 views
7

Farklı ekran çözünürlüklerine sahip bir çift monitör kurulumuna sahibim ve Chrome'da this page adresini ziyaret ettiğimde her iki ekran için de doğru çözümü gösterir. Ancak IE sadece birincil ekranımın çözünürlüğünü gösterir. IE window.screen.availWidth ve window.screen.availHeight'da göründüğünde, yalnızca birincil ekranın değerlerini döndürür. Internet Explorer çalıştıran ikinci ekran için ekran çözünürlüğünü alabilir miyim?Internet Explorer'da Window.screen ve birden fazla monitör

+0

hangi sürüm hakkında konuşuyoruz, en az desteklenen sürüm vb .. – Tschallacka

+0

IE8 (IE8 IE8 modunda) büyük olurdu, ama sadece IE11 de iyi olurdu. –

cevap

4

Ben çok değil biliyorum http://archive.cpradio.org/code/javascript/dual-monitors-and-windowopen/

function FindLeftWindowBoundry() 
 
{ 
 
\t // In Internet Explorer window.screenLeft is the window's left boundry 
 
\t if (window.screenLeft) 
 
\t { 
 
\t \t return window.screenLeft; 
 
\t } 
 
\t 
 
\t // In Firefox window.screenX is the window's left boundry 
 
\t if (window.screenX) 
 
\t \t return window.screenX; 
 
\t \t 
 
\t return 0; 
 
} 
 

 
window.leftWindowBoundry = FindLeftWindowBoundry; 
 

 
// Find Left Boundry of the Screen/Monitor 
 
function FindLeftScreenBoundry() 
 
{ 
 
\t // Check if the window is off the primary monitor in a positive axis 
 
\t // X,Y     X,Y     S = Screen, W = Window 
 
\t // 0,0 ---------- 1280,0 ---------- 
 
\t //  |   |   | ---  | 
 
\t //  |   |   | | W | | 
 
\t //  |  S |   | --- S | 
 
\t //  ----------   ---------- 
 
\t if (window.leftWindowBoundry() > window.screen.width) 
 
\t { 
 
\t \t return window.leftWindowBoundry() - (window.leftWindowBoundry() - window.screen.width); 
 
\t } 
 
\t 
 
\t // Check if the window is off the primary monitor in a negative axis 
 
\t // X,Y     X,Y     S = Screen, W = Window 
 
\t // 0,0 ---------- -1280,0 ---------- 
 
\t //  |   |   | ---  | 
 
\t //  |   |   | | W | | 
 
\t //  |  S |   | --- S | 
 
\t //  ----------   ---------- 
 
\t // This only works in Firefox at the moment due to a bug in Internet Explorer opening new windows into a negative axis 
 
\t // However, you can move opened windows into a negative axis as a workaround 
 
\t if (window.leftWindowBoundry() < 0 && window.leftWindowBoundry() > (window.screen.width * -1)) 
 
\t { 
 
\t \t return (window.screen.width * -1); 
 
\t } 
 
\t 
 
\t // If neither of the above, the monitor is on the primary monitor whose's screen X should be 0 
 
\t return 0; 
 
} 
 

 
window.leftScreenBoundry = FindLeftScreenBoundry; 
 

 
console.log(window.screen.width); 
 
console.log(window.leftScreenBoundry()); 
 

 
console.log(window.screen.height);

bulunan antik kodu kullanarak, ama en az istemci ayarlamak çift monitör ve ne kadar geniş olduğunu eğer değerlendirmek sağlayacak set.

IE'nin yaptığı tek şey, tüm izleyiciler arasında çözünürlüğü eşit olarak dağıtmaktır.

Bu nedenle, toplam genişlik alır ve monitör sayısına bölünür.

Testlerim için IE'de 3 monitör, 1920 x 1080'de bir tane ve 1600 x 900'de bir tane var ve IE, 1745 0 -1745 olarak sola dönme pozisyonunu verdi. Küçük snippet size yardımcı olacak veya bir başkası IE için yarı uyumlu kod yapıyor.

+0

Bu kodu zaten buldum ve kullanamıyorum. Sol ekranım 1600x900 ve sağ ekranım 1920x1080. Doğru ekran birincil ekranım. window.leftScreenBoundry() ', -1920 değerini döndürür ve bu, masaüstümün sınırlarını aşmaktadır. –

+0

burada aynı. Monitörlerin ve benzeri siparişlerin yapılması ile ilgilidir. Bununla ilgili yapabileceğiniz fazla bir şey yok. Ne elde etmeye çalışıyorsun? Pencereyi yeniden boyutlandırma – Tschallacka

+0

. IE'nin pencere boyutunu tutmasına izin vermemi engelleyen birkaç dinamik elemanım var. –