2015-02-11 92 views
1

我想用javascript獲取視口寬度。但不是普通的虛擬視口。我需要邏輯硬件視口,在我的情況下,它不是設置視口元標記的選項。有沒有辦法在沒有視口元標記的硬件像素中獲得真實的視口大小?

爲了解決我的問題:我想在iPhone 5上獲得320像素(像素比爲2的640個硬件像素),儘管虛擬視口大大超過320像素。

有沒有辦法做到這一點?

感謝, 赫爾穆特

+0

如果您未設置視口元標記,那麼'screen.width'將始終爲您提供設備中可用的設備像素寬度,並且如果您設置了視口元標記,它仍然會給您完全相同的數字。這是你要求的嗎? – istos 2015-02-11 21:42:12

+0

只有screen.width的問題是,它會在桌面瀏覽器上顯示整個屏幕寬度。但我只想獲得瀏覽器寬度。但我只是找到了解決辦法..見下面 – user1030151 2015-02-11 21:59:57

+0

哦!我以爲你只是在談論移動設備。 – istos 2015-02-11 22:04:42

回答

0

我發現我的這篇文章中回答:http://menacingcloud.com/?c=viewportScale

..和breaked下來的真正重要的東西..

..所以,這是我的結果:

// cross browser way to get the common viewport width: 
var viewportWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); 

// cross browser way to get the orientation: 
var isLandscape = document.documentElement.clientWidth > document.documentElement.clientHeight; 

// then get the logical screen width if the screen is smaller than the viewport 
// otherwise get the viewport width 
var screenWidth = screen.width < viewportWidth ? 
    Math[isLandscape ? 'max' : 'min'](screen.width, screen.height) : 
    viewportWidth; 

// screen width 
console.log(screenWidth); 

這裏是準備使用的功能大家

function getLogicalDeviceDimensions() { 
    // cross browser way to get the common viewport width: 
    var viewportWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); 
    var viewportHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); 

    // cross browser way to get the orientation: 
    var isLandscape = document.documentElement.clientWidth > document.documentElement.clientHeight; 

    // then get the logical screen size if the screen is smaller than the viewport 
    // otherwise get the viewport size 
    var screenWidth = screen.width < viewportWidth ? 
      Math[isLandscape ? 'max' : 'min'](screen.width, screen.height) : 
      viewportWidth; 

    var screenHeight = screen.height < viewportHeight ? 
      Math[isLandscape ? 'min' : 'max'](screen.width, screen.height) : 
      viewportHeight; 

    return [screenWidth, screenHeight]; 
} 
相關問題