2010-10-14 28 views
17

पर ध्यान दिए बिना ब्राउज़र विंडो स्थिति प्राप्त करें मैं ज़ूम स्तर को ध्यान में रखकर "निश्चित" होने के बिना ब्राउज़र विंडो के बाएं किनारे (मेनू, सीमा, कैप्शन इत्यादि सहित) कैसे प्राप्त कर सकता हूं? (This question मूल प्रश्न को संबोधित करता है, लेकिन ज़ूम पर विचार नहीं करता है।)।ज़ूम

window.screenLeft या window.screenX क्रोम और सफारी पर ठीक काम करता है, लेकिन ये रिपोर्ट आईई 6, आईई 8 और फ़ायरफ़ॉक्स का उपयोग करके "निश्चित" मान हैं।

मैंने माना है कि मैं स्क्रीन के आकार को अधिक विश्वसनीय रूप से प्राप्त कर सकता हूं, और शायद उस स्क्रीन याde.deviceXDPI का उपयोग कर ज़ूम कारक निर्धारित कर सकता हूं, लेकिन मुझे यकीन नहीं है कि मैं स्थिति को सही करने के लिए इसका उपयोग कैसे करूंगा।

(आप में से कुछ शायद सोच रहे हैं कि मैं ऐसा क्यों करना चाहता हूं। ऐसा इसलिए है क्योंकि एक प्रशिक्षण वेबसाइट उपयोगकर्ता की स्क्रीन के दाईं ओर एक ब्राउज़र विंडो खोलती है। ब्राउज़र स्क्रिप्ट टैग हैक का उपयोग करके मेरे एप्लिकेशन के साथ संचार करता है । आवेदन ही आकार बदलने के लिए तो यह ब्राउज़र विंडो के बाईं ओर बिल्कुल फिट बैठता है चाहता है)

संपादित

मैं दो बातों का उल्लेख किया जाना चाहिए था:।

  1. मैं ब्राउज़र जूमिंग उस के बारे में पूछ रहा हूँ आप आमतौर पर एक व्यू एम से पहुंच सकते हैं enu या Ctrl दबाकर और अपना माउस व्हील बदलकर। चूंकि अधिकांश वेब पेज अपने लेआउट को मिटाने के बिना डिफ़ॉल्ट फ़ॉन्ट आकार (उदाहरण के लिए) में परिवर्तनों का जवाब देने में सक्षम नहीं होते हैं, इसलिए ब्राउज़र स्केलिंग द्वारा सभी मापों को पिक्सल समेत ज़ूम लागू करते हैं। चीजों को सुसंगत रखने के लिए, वे रिपोर्ट किए गए क्लाइंट और विंडो आकार, माउस की स्थिति इत्यादि भी स्केल करते हैं। मेरे लिए परेशानी यह है कि मैं असली (असंसक्षित) उपायों को चाहता हूं।
  2. मैं एक जावास्क्रिप्ट समाधान की तलाश में हूँ।

उत्तर

-2

आप एक पूर्ण स्क्रीन आवेदन है तो आप इस पर विचार करने के लिए देख रहे हैं: An expanding middle in CSS

स्वीकार किए जाते हैं जवाब के लिए LiveDemo पर एक नज़र डालें। यह समाधान ज़ूमिंग के कारण किसी भी प्रभाव के लिए खूबसूरती से क्षतिपूर्ति करता है।

+0

क्षमा करें, नहीं एक पूर्ण स्क्रीन आवेदन करने के लिए देख। ब्राउजर विंडो कहां है यह जानने का प्रयास कर रहा है। –

4

आप How to detect page zoom level in all modern browsers?

देखा हम window.devicePixelRatio उपयोग कर सकते हैं या द्विआधारी खोज विधि वहाँ सुझाव पिक्सेल अनुपात निर्धारित करने के लिए है। फिर हम इस पहलू के साथ window.screenX और window.screenY पैमाने:

मैं फ़ायरफ़ॉक्स 48 में यह परीक्षण किया है और विंडो की स्थिति सबसे 2 पिक्सेल में जब ज़ूम स्तर बदलने के साथ बदल दिया है। window.devicePixelRatio का उपयोग करना या बाइनरी खोज ने अनिवार्य रूप से वही परिणाम दिए। मुझे लगता है कि 2 पिक्सल बंद होने से ग्राफिकल अनुप्रयोगों के लिए वास्तव में परेशान हो सकता है, लेकिन ज़ूम स्तर निर्धारित करना गन्दा लग रहा है।

<html> 
 
    <head> 
 
    <meta charset="UTF-8"> 
 
    </head> 
 
    <body> 
 
    <input id="button" type="button" value="Click me!"/> 
 
    <style id=binarysearch></style> 
 
    <div id=dummyElement>Dummy element to test media queries.</div> 
 
    <script> 
 
     var mediaQueryMatches = function(property, r) { 
 
      var style = document.getElementById('binarysearch'); 
 
      var dummyElement = document.getElementById('dummyElement'); 
 
      style.sheet.insertRule('@media (' + property + ':' + r + 
 
\t \t   \t ') {#dummyElement ' + 
 
\t \t \t   '{text-decoration: underline} }', 0); 
 
      var matched = getComputedStyle(dummyElement, null).textDecoration 
 
\t   == 'underline'; 
 
      style.sheet.deleteRule(0); 
 
      return matched; 
 
     }; 
 

 
     var mediaQueryBinarySearch = function(
 
      property, unit, a, b, maxIter, epsilon) { 
 
      var mid = (a + b)/2; 
 
      if (maxIter == 0 || b - a < epsilon) return mid; 
 
      if (mediaQueryMatches(property, mid + unit)) { 
 
\t    return mediaQueryBinarySearch(property, unit, mid, b, maxIter-1, epsilon); 
 
      } else { 
 
\t    return mediaQueryBinarySearch(property, unit, a, mid, maxIter-1, epsilon); 
 
      } 
 
     }; 
 

 
</script> 
 
<script type="text/javascript">  
 
    var b = document.getElementById("button"); 
 
    b.onclick = function() { 
 
     var pixelratio = mediaQueryBinarySearch(
 
\t  'min--moz-device-pixel-ratio', '', 0, 6000, 25, .00001); 
 

 
     console.log("devicePixelRatio:", window.screenX * window.devicePixelRatio, window.screenY * window.devicePixelRatio); 
 
     console.log("binary search:", window.screenX * pixelratio, window.screenY * pixelratio); 
 
     console.log(Math.abs(pixelratio - window.devicePixelRatio)); 
 
    } 
 
    </script> 
 
    </body> 
 
</html>

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