就遇到了這個問題,在PhoneGap的應用程序中的其他日子,但這種行爲似乎也與新的Safari一致。
盡我所知,新的Safari會在鍵盤啓動時調整報告給網頁的視口。我有一個高度爲100%的頁面和一個絕對位於頁面底部的導航欄。當鍵盤出現時,導航就隨之而來。令人煩惱的是,這導致我的輸入字段中的2個失去焦點,隱藏它們並使其無法完成登錄!
以前,我使用可以避免高度=設備高度在視窗meta標籤,因爲舊的Safari似乎並不瞭解關於狀態欄什麼,以及報告的設備,高度爲20像素總是太高,導致20px滾動以查看頁面的最底部。
我最終使用的修復方法是設置height =設備高度,iOS7沒有任何與視口大小調整/導航重疊相關的問題。令我驚訝的是,在所有情況下,頁面仍然是設備高度的100%。
<meta name="viewport" content="width=device-width, height=device-height, user-scalable=no">
爲了得到這個固定高度的情況與iOS5的和6一致地工作,我做了一些設備檢測和人工計算設備高度 - 20像素,重置視口標籤。
function iOSversion() {
if (/iP(hone|od|ad)/.test(navigator.platform)) {
// supports iOS 2.0 and later: <http://bit.ly/TJjs1V>
var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/);
return [parseInt(v[1], 10), parseInt(v[2], 10), parseInt(v[3] || 0, 10)];
}
}
ver = iOSversion();
if (ver[0] >= 5 && ver[0] <= 6) {
$('head meta[name="viewport"]').attr("content", "width=device-width, height="+(window.innerHeight-20)+", user-scalable=no")
}
我覺得有點不對這個解決方案,但堅持搖滾(新的Safari瀏覽器)和硬地(舊Safari瀏覽器)之間,這是我的回答。
如果您找到更好的方法,請請讓我知道!祝你好運:)
iOS7是有史以來最笨的瀏覽器。我認爲他們應該把它推回 –
好吧...讓我們不要在這裏被帶走,那裏有ie 6依然漂浮在...:p – shibbybird
哦,我甚至想起它:p –