2012-02-21 71 views
3

使用這種回暖點擊:錨iOS上的Safari瀏覽器失去點擊的能力滾動後

$("nav li a").click(function(event) { 
    event.preventDefault(); 
    target = $(this).attr("href").replace('#', ''); 
    goToByScroll(target); 
}); 

這是滾動功能:

function goToByScroll(id) { 
    $('html, body').animate({ 
     scrollTop: $("#"+id).offset().top - totalHeight 
    }, 'slow'); 
} 

第一次單擊作品,但之後的鏈接AREN除非手動滾動頁面,否則不可點擊/活動。有任何想法嗎?

回答

0

有很多因素可以在這裏發揮作用,大多數不涉及您鏈接的代碼。對於點擊到不行:

  1. click事件被清除
  2. 您嘗試單擊該單元由另一個(可能是透明的)元素
  3. 你的元素的可點擊區域移位或覆蓋格式不正確

對於第一種可能性是問題,您的元素必須保持不可點擊直到刷新或直到您重新創建點擊處理程序。檢查點擊處理程序是否不是多次構建的。您可以在撥打$(element).click(function() { ... })的地方設置斷點或警報/控制檯語句來完成此操作。

對於第二種可能性是該問題,另一個元素需要存在於可點擊元素的頂部。這可以通過使用瀏覽器或瀏覽器擴展來檢查,該擴展允許您右鍵單擊要檢查的元素。如果獲取檢查的元素不是您的可點擊元素,這可能是問題。

對於第三種可能性是該問題,您必須檢查可點擊元素在不可點擊時的位置,大小和形狀。使用您的瀏覽器或瀏覽器擴展程序選擇並突出顯示頁面上的元素。看看它正在顯示的位置,它具有的尺寸,z-index的計算結果,它具有的顯示屬性(display: inline因可點擊性而導致的問題),以及它在當前視口中是否「實際」。

總之,您發佈的代碼幾乎沒有說明可能發生的情況,因此您需要進行更多調試或提供更多代碼。

+0

我在標題和導航標記上使用了固定位置。導航標籤有li元素全部顯示塊並向左浮動。標題和導航標記具有z-index:1,以便它們在滾動文檔時保持在內容的頂部。問題是,我最初在$(「nav li a」)上得到一個點擊事件,但後來我失去了點擊能力。但是如果我只滾動一個像素的頁面,我就可以獲得點擊能力。我見過類似的帖子,表明這個問題是一個固定位置div的iOS錯誤。想知道這是否是同樣的情況。 – user1223466 2012-02-21 14:02:21

+0

我建議在jsfiddle中建立一個準系統版本,看看你是否可以產生相同的錯誤結果。如果不是,那麼錯誤在於其他地方。 – Koviko 2012-02-21 21:38:20

+0

我得到完全相同的問題...我的標題是POS固定。當您向下滾動新聞項目列表時,標題後面不會點擊。但是用手指滾動並且可以立即點擊。 當你只有iOS時,你如何進行調試?!?我沒有實驗! 但我確實發現,如果鏈接已在標題下滾動,則會點擊該鏈接而不是後退。 – 2012-06-29 09:17:33

1

根據iOS人員的進一步調查,我們發現這是iOS5 Safari上的一個bug。

我試過了;

// $('html,body').animate({ scrollTop: scrollto + 'px' }, 'slow') 
window.scroll(0,0); 

而且看到它實際上將固定頭部繪製在屏幕下方。點擊工作。

所以我將代碼交換回來了,雖然它在頂部正確地繪製了標題,但活動的點擊區域仍然在頁面的更下方,儘管是不可見的,可點擊。

似乎他們已經解決了它在iOS6上的測試。

我耗盡了各種CSS和DOM操作,刪除和重新插入新的標題區...沒有任何作用。

所以我99%肯定會發布這個答案。大聲笑。雖然我意識到這並不能幫助你。

相關問題