2008-09-26 32 views
7

के साथ एकाधिक स्क्रीन के लिए परीक्षण करना क्या यह बताना संभव है कि वेबसाइट का उपयोगकर्ता एकाधिक मॉनीटर का उपयोग कर रहा है या नहीं? मुझे पॉपअप की स्थिति खोजने की ज़रूरत है, लेकिन इसकी संभावना है कि उपयोगकर्ता के पास एकाधिक मॉनीटर सेटअप होगा। जबकि window.screenX इत्यादि ब्राउज़र मॉनीटर की स्थिति देगी जो कई मॉनीटरों के लिए बेकार है।जावास्क्रिप्ट

+2

पॉपअप चूसना। लेकिन अगर आपको बिल्कुल * उनका उपयोग करना चाहिए, तो उन्हें अपनी मूल विंडो से संबंधित रखें - पूर्ण निर्देशांक का उपयोग न करें। – Shog9

+0

@ शोग 9 हाय, क्या आप कृपया स्पष्टीकरण दे सकते हैं कि नए पॉपअप खोलते समय हम पूर्ण निर्देशांक का उपयोग क्यों नहीं कर सकते? यह मेरे लिए बहुत उपयोगी होगा। – Vadim

+0

शायद यह एक पूरी तरह से अलग प्रश्न, @ वादिम के लिए एक उपयुक्त विषय है - लेकिन संक्षिप्त जवाब यह है कि एक उचित मौका है कि आप कहीं भी पॉपअप को स्थिति में रखने जा रहे हैं जो मेरे लिए असुविधाजनक है। मेरे पास अक्सर मेरे द्वितीयक मॉनिटर के दाहिने आधे हिस्से में एक ब्राउज़र विंडो खुलती है जो मेरे प्राथमिक मॉनीटर से बड़ी होती है और उसके दाहिनी ओर स्थित होती है; यदि आप इसे ध्यान में नहीं लेते हैं, तो एक बहुत अच्छा मौका है कि आप अपने पॉपअप को किसी अन्य ऐप या ऑफ-स्क्रीन पर भी डाल देंगे। – Shog9

उत्तर

0

मुझे विश्वास नहीं है कि यह अभी संभव है; हालांकि वेब विकास के अलावा विजेट्स में डेस्कटॉप उपयोग के लिए जेएस अधिक लोकप्रिय हो रहा है और भविष्य के संस्करण

+0

मुझे आश्चर्य है कि यह कुछ ऐसा प्रोजेक्ट है जैसे गियर्स लागू हो सकता है? – slashnick

+0

गियर्स डेटा संग्रहीत करने के बारे में है। – Till

0

के लिए अनुरोध करने के लिए यह एक उत्कृष्ट विशेषता होगी, मैंने इसे एक ऐसे समाधान के रूप में पाया जो किसी ने उपयोग किया है ... मैं नहीं देखता आप इसे भरोसा क्यों नहीं कर सके।

[अगर चौड़ाई तो अधिक से अधिक है (ऊंचाई/3) * 4> (Screen.Width) तब]

[दोहरी मॉनिटर उपयोगकर्ता है]

[समाप्ति हैं]

+2

उह ... मैं अपनी स्क्रीन ढेर करता हूं। ऊंचाई> चौड़ाई। न तो स्क्रीन की एक ही चौड़ाई है, इसलिए यदि आप अधिकतम चौड़ाई को गले लगा रहे थे तो आप एक निश्चित ऊंचाई से ऑफ-स्क्रीन समाप्त कर देंगे। कॉन्फ़िगरेशन के नीचे एक उपरोक्त दो का उल्लेख नहीं करना है। – Shog9

+0

इसके अलावा, बहुत से मॉनीटरों के पास 4: 3 – Neall

+0

की तुलना में व्यापक पहलू अनुपात हैं कुछ मशीनें (मेरे स्वयं) दो अलग-अलग डेस्कटॉप के रूप में स्थापित की गई हैं ताकि ऊंचाई और चौड़ाई केवल स्क्रीन पर स्क्रीन के लिए लौटा दी जा सके। – slashnick

0

आप कर सकते हैं ऐसा मत करो। हालांकि आप मूल विंडो पर केंद्रित पॉपअप को स्थिति दे सकते हैं। मुझे लगता है कि आपकी वेबसाइट के बीच में "div" को संवाद के रूप में दिखाने का बेहतर विचार है, क्योंकि यह पॉपअप अवरुद्ध होने का मौका छोटा है और यह आईएमओ कम परेशान है।

0

स्क्रीन के आकार के बारे में क्या? एकाधिक स्क्रीन आमतौर पर एक महान आकार है। बस आकारों की जांच करें और तय करें कि यह केवल एक या अधिक स्क्रीन पर होना उचित है या नहीं।

0

आप के साथ एक अच्छी तरह से शिक्षित अनुमान कर सकता है जावास्क्रिप्ट का screen.width (.availWidth) और screen.height (.availHeight)।

मेरा विचार यह मानना ​​था कि (!) सामान्य रूप से मॉनीटर एक निश्चित अनुपात का पालन करते हैं, जबकि [avail] चौड़ाई इसके बाहर होनी चाहिए क्योंकि स्क्रीन केवल चौड़ाई के मामले में डुप्लिकेट की जाती है, लेकिन ऊंचाई नहीं।

इस उत्तर को लिखते हुए, यह एक गंभीर हैक की तरह लगता है। कुछ भी मैं वास्तव में भरोसा नहीं करता।

+3

यह काम नहीं करेगा। 'availwith' और' availHeight' आपको वर्तमान मॉनिटर के आधार पर बताता है। यदि ब्राउज़र विंडो दूसरी मॉनीटर पर है, तो इसे 'availTop' और' availLeft' से अनुमानित किया जा सकता है, लेकिन यदि ब्राउज़र विंडो प्राथमिक मॉनिटर पर है, तो वे गुण आपको एक दूसरा मॉनीटर वास्तव में मौजूद नहीं बता पाएंगे। –

1

यह एक अत्यधिक जटिल समाधान है। मैं अत्यधिक प्रतिक्रिया देने की सिफारिश करता हूं - इसका उपयोग उत्पादन साइट पर नहीं किया जाता है, केवल मेरे लिए अवधारणा के त्वरित 'अवधारणा' के रूप में।

दाएं, चेतावनी।

मैंने पहली बार माना है कि उपयोगकर्ता के पास दोहरी मॉनिटर सेटअप नहीं हो सकता है, लेकिन उनके पास वास्तव में एक बड़ी मॉनिटर हो सकती है और इसलिए वही कार्यक्षमता लागू की जा सकती है।

var newWindow, 
    screenSpaceLeft = window.screenX, 
    screenSpaceTop = window.screenY, 
    screenSpaceRight = screen.availWidth - (window.screenX + window.outerWidth), 
    screenSpaceBottom = screen.availHeight - (window.screenY + window.outerHeight), 
    minScreenSpaceSide = 800, 
    minScreenSpaceTop = 600, 
    screenMargin = 8, 

    width = (screen.availWidth/2.05), 
    height = screen.availHeight, 
    posX = (screen.availWidth/2), 
    posY = 0; 

e.preventDefault(); 

if (screenSpaceRight > screenSpaceLeft && screenSpaceRight > screenSpaceTop && screenSpaceRight > screenSpaceBottom && screenSpaceRight > minScreenSpaceSide) { 
    if (width > screenSpaceRight) { 
     width = screenSpaceRight - screenMargin; 
    } 
    if (posX < (screen.availWidth - screenSpaceRight)) { 
     posX = window.screenX + window.outerWidth + screenMargin; 
    } 
} else if (screenSpaceLeft > screenSpaceRight && screenSpaceLeft > screenSpaceTop && screenSpaceLeft > screenSpaceBottom && screenSpaceLeft > minScreenSpaceSide) { 
    if (width > screenSpaceLeft) { 
     width = screenSpaceLeft - screenMargin; 
    } 

    posX = 0; 
} else if (screenSpaceTop > screenSpaceRight && screenSpaceTop > screenSpaceLeft && screenSpaceTop > screenSpaceBottom && screenSpaceTop > minScreenSpaceTop) { 
    posX = 0; 
    posY = 0; 
    width = screen.availWidth; 
    height = (screen.availHeight/2.05); 
    if (height > screenSpaceTop) { 
     height = screenSpaceTop - screenMargin; 
    } 
} else if (screenSpaceBottom > screenSpaceRight && screenSpaceBottom > screenSpaceLeft && screenSpaceBottom > screenSpaceTop && screenSpaceBottom > minScreenSpaceTop) { 
    posX = 0; 
    width = screen.availWidth; 
    if (window.screenY + window.outerHeight + screenMargin > (screen.availHeight/2)) { 
     posY = window.screenY + window.outerHeight + screenMargin; 
    } else { 
     posY = (screen.availHeight/2); 
    } 
    height = (screen.availHeight/2.05); 
    if (height > screenSpaceBottom) { 
     height = screenSpaceBottom - screenMargin; 
    } 
} 

newWindow = window.open(this.href, "_blank", "width=" + width + ",height=" + height + ",location=yes,menubar=no,resizable=yes,scrollbars=yes,status=yes,menubar=yes,top=" + posY + ",left=" + posX); 

यह जाँच करता है कि कितना उपलब्ध स्क्रीन स्थान, और एक न्यूनतम राशि, यदि उपलब्ध हो (800 x 600) तो वह यहां विंडो खोलता है। यदि पर्याप्त जगह नहीं है, तो यह स्क्रीन के दाईं ओर खिड़की को ओवरले करता है, जिसमें से लगभग आधे भाग लेते हैं।

नोट्स:

सबसे पहले, यह पता लगाने के लिए बदल दिया जाना चाहिए जहां अंतरिक्ष की अधिकतम राशि सिर्फ arbitarily छोड़ दिया खोज करते हैं, ठीक है, ऊपर, नीचे के बजाय है।

दूसरा, मुझे संदेह है कि कुछ जगहों पर जहां स्क्रीन.वैलहेइट का उपयोग किया गया है, स्क्रीन.हेइट का उपयोग इसके बजाय किया जाना चाहिए। इसी तरह चौड़ाई के लिए। इसका कारण यह है कि जब उपयोगकर्ता का दूसरा मॉनीटर होता है या नहीं (या स्क्रीन पर बहुत सी जगह है) तो टास्कबार कहां से अधिक दिलचस्पी नहीं लेता है।

तीसरा, यह आईई < 8 में काम नहीं करेगा। यह स्क्रीनएक्स/स्क्रीनवाई के बजाय स्क्रीनलेफ्ट और स्क्रीनटॉप का उपयोग करके आसानी से संशोधित किया जा सकता है जहां उचित हो।

चौथा, कोड गन्दा है और इसे करने से बहुत अधिक सुरुचिपूर्ण दिखने के लिए बनाया जा सकता है। मुझे इसके लिए कोई माफी नहीं है। हालांकि, आपको कहीं भी भयानक, अनजान जेएस का उपयोग नहीं करना चाहिए और इसे NEEDS को फिर से लिखना चाहिए। मैंने इसे केवल यहां रखा है क्योंकि यह इस समय मेरी सोच की ट्रेन में है और जब मैं इसे ठीक से लिखता हूं तो मैं यहां एक अच्छा समाधान पोस्ट करना भूल जाऊंगा क्योंकि यह कुछ महीनों तक नहीं होगा।

दाएं। तुम वहाँ जाओ। मैं आपके जावास्क्रिप्ट को भयानक, बदसूरत और कम से कम कुछ भी करने में मुश्किल बनाने के लिए कोई ज़िम्मेदारी स्वीकार नहीं करता हूं। :)

संबंधित मुद्दे