2012-10-24 209 views
15

我花了最後一小時通過許多問題閱讀縮放和.scrollTop()和handlings的變化和嘗試至少20米不同的東西 - 那看起來根本可行的我的情況,我仍然一切只有部分解決方案。scrollTop的移動Safari瀏覽器無法正常工作

我有了三個字段和一個按鈕繼續形式。繼續按鈕打開表格的其餘部分。當您選擇文本字段時,Safari移動會放大。我特別不介意。如果我阻止縮放,那麼它可能太小而無法讀取字段,如果我以可讀的縮放級別加載,則只能看到頁面的一部分,因此放大行爲是可以的。

的情況是,點擊後按鈕和形式的另一半出現時,窗口仍在放大,你正在查看的頁面的隨機補丁。

從我可以設想有可能有兩個handlings:
1)單擊按鈕
2)滾動到表格的下一部分顯示了

我什麼都試過後實際縮小我可以找到縮小和處理meta標籤中的viewport content width會觸發,但不會爲我處理它,因爲它只是使視口變大或變小,實際上並沒有縮小。這可能適用於其他人,但不適合我,因爲我已經有很多樣式,可能使這不是一個選項。

我已經解決了滾動解決方案和.scrollLeft()工作正常,但.scrollTop()將無法​​正常工作,不管我選擇什麼選擇器。我已經試過:

$('body').scrollTop 
$('html').scrollTop 
$('document').scrollTop 
$('body,html,document').scrollTop 
$('html:not(:animated),body:not(:animated)').scrollTop 
$('html:not(:animated),body:not(:animated),document:not(:animated)').scrollTop 
$('#content').scrollTop // that's a wrapper div 
$(window).scrollTop 

任何人都知道如何讓.scrollTop()在Safari中移動工作?

+0

得愛護Safari移動縮放。 $(window).scrollTop可能認爲它位於頁面的頂部,因爲JS不處理縮放。您可以嘗試將表單向下移動而不是滾動視口? –

回答

-2

無需使用jQuery來做到這一點:

window.scrollTo(0, 0); 

您還可以防止變焦全部使用共同的元標記:

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

您可能希望這樣做只是你的頁面上遇到問題?

0

你嘗試使用錨?

他們應該在任何地方工作,因爲他們是瀏覽器的原生功能。

原帖與此代碼here

$(function() { 
    $('a[href*="#"]:not([href="#"])').on('click', function() { 
    if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) { 
     var target = $(this.hash); 
     target = target.length ? target : $('[name=' + this.hash.slice(1) +']'); 
     if (target.length) { 
     $('html, body').animate({ 
      scrollTop: target.offset().top 
     }, 1000); 
     return false; 
     } 
    } 
    }); 
}); 
1

我想你想解決的事情在錯誤的道路。只需確保您的表單字段在移動視口上有font-size: 16px,這樣Safari就不會放大。

如果您的容器上有position: fixed,則scrollTop可能不起作用。

相關問題