2011-01-07 24 views
18

我使用window.innerHeightwindow.innerWidth指令來獲取瀏覽器的可用窗口大小。它與firefox,safari(在Mac上)和android一起工作,但我在iOS中得到了奇怪的結果。的iOS返回錯誤值window.innerHeight /寬

iOS總是返回innerHeight = 1091和innerWidth = 980。

我使用iOS SDK的iOS模擬器(我沒有iPhone/iPod)。 iPhone和iPhone Retina模擬器返回相同的值。我不明白他們如何能夠返回相同的數字,因爲這兩種模式有兩種不同的屏幕分辨率。

我玩視口參數沒有成功。

回答

1

檢查蘋果對如何設置視口的移動Safari瀏覽器,以及它如何擴展文件:http://developer.apple.com/library/safari/#documentation/appleapplications/reference/safariwebcontent/UsingtheViewport/UsingtheViewport.html

基本上,你可以設置一個規模爲視口,並使其默認爲任何你想要通過設置元標記在您的HTML頁面上。

+0

然後我得到正確的值,我在這裏發帖之前找到了這個網頁。我不完全確定這是相關的,但我沒有找到如何使移動Safari移動到不擴展到980x1091。我嘗試使用但沒有改變任何東西。 – ohmer 2011-01-07 21:27:44

+0

如果您希望視口爲320x480,您應該嘗試使用' pgb 2011-01-07 21:35:39

+0

不起作用... safari仍然返回980x1091 。 – ohmer 2011-01-10 18:20:38

6

添加

<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=no"> 

<head>元素。這將修復innerWidth問題。

視網膜具有高密度像素 - 基本上4個硬件像素到1個邏輯像素。這就是爲什麼他們報告相同的決議。

+2

沒有幫助我的情況...使用Xcode 4.6.3和iPhone 6.1模擬器 – Kozuch 2013-08-29 09:29:46

+8

`maximum-scale = 1.0; user-scalable = no` <=永遠不要這樣做。禁用縮放對於可用性和可訪問性來說是可怕的做法 – 2014-02-25 19:09:09

1

同樣,根據指定的視口元標記高度:

<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />

我有我的iPad 2(5.0.1)使用jQuery $(窗口).height(),因爲問題我錯過了指定meta標籤的高度。添加後它效果更好。

13

嘗試使用screen.width而不是window.innerWidth

<script> 
    if (screen.width > 650) { 
    .... 
    } 
</script> 
3

卡住了同一個問題。 這是爲我工作的解決方案。

首先我檢測客戶端是否是iOS設備。 使用Screen interface

var iOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream; 
var iw = (iOS) ? screen.width : window.innerWidth, ih = (iOS) ? screen.height : window.innerHeight;