2011-02-08 30 views
2

幾年前我創建了一個Web應用程序(JS/CSS/HTML在LAMP後端),它一直工作正常。客戶現在在他的iPhone上使用它,並報告說,當在具有2個輸入的登錄屏幕上時,窗口變得「太多」,並且當他輸入輸入時,它不縮放到「正常」縮放級別(從他發送的screengrabs,它看起來像縮放到'正常'和輸入到輸入時使用的縮放級別之間的某個地方)。Javascript網絡應用程序,控制iPhone放大輸入焦點和模糊

是否可以控制任一行爲?我已經閱讀了關於用戶可擴展:0的元素,但是這聽起來像是A)根本不工作,或者B)完全阻止縮放。

我想說第二個問題更重要(在用戶輸入文本之後,它應該放大到「正常」比例)。

我會再次提到這是一個通用的網絡應用程序,而不是'iPhone應用程序'(它建立在傳統的網絡技術上,而不是Cocoa或Objective-C上)。我甚至沒有iPhone,也沒有可以使用模擬器的Mac,而我所見過的Windows模擬器似乎只不過是圖形中的iframe。

感謝

+0

首先,如果這是從來沒有要求我建議你有你的客戶前的iPhone進行測試的目的,但如果它對我來說,我會讓他預先購買一臺iPhone,以確保您獲得補償,以便花時間讓您的應用程序iPhone兼容。 – DoctorLouie

回答

2

如果你把用戶縮放選項,它是由他回到原來的網頁縮放比例。在縱向模式下的Iphone safary瀏覽器進行放大,每次打開鍵盤或組合框。然後它不會縮小到原始比例(它必須通過雙擊屏幕或捏住屏幕來完成)。

另一種選擇是不是讓用戶與視口元標記變焦

 <meta name="viewport" id="view" content="user-scalable=no, width=device-width, initial-scale=1.0" /> 

然後,當鍵盤打開時或微調打開

林目前正在尋找解決它的辦法(iphone不會放大合併縮放的可能性與避免縮放時,鍵盤打開),但我沒有找到任何方式去做它...

1

我解決了它與視口玩:正如你所說,當沒有用戶縮放啓用,然後打開鍵盤或組合不會進行縮放,但是後來你放鬆了用戶的縮放功能。

我對視禁用變焦當選擇一個組合,然後我在一秒鐘後恢復縮放選項:

document.documentElement.addEventListener("touchstart", function (event) { 
      if((event.target.nodeName == "SELECT") || (event.target.nodeName == "INPUT") || (event.target.nodeName == "TEXTAREA")) { //it is a combo 
       document.getElementById("view").setAttribute('content', 'width=device-width, user-scalable=no'); 
       setTimeout(function() { 
        document.getElementById("view").setAttribute('content', 'width=device-width, user-scalable=yes'); 
       }, 1000); 
      } 
      }, true); 

不是說我視有「看法」爲ID。

是的,我知道這是不是最好的解決辦法,但它的工作原理...