2016-09-06 228 views
3

爲什麼當用戶點擊列表中的鏈接會導致瀏覽器閃爍?這似乎是非常明顯的,當用戶點擊兩次相同的'鏈接'。有沒有辦法讓我消除這種情況?html滾動到閃爍頁面

如果您單擊向上滾動而不是向下滾動的鏈接,它似乎也會發生。爲了測試這個點擊列表項「測試」,然後單擊「爲什麼

https://jsfiddle.net/JokerMartini/9vne9423/

這裏是一個正在做一切工作的主要JS位...

JS

function scroll_to_element(element) { 
    $('html, body').animate({scrollTop: $(element).offset().top}, 500); 
} 

$(window).ready(function() { 

    $(".nav-title").click(function() { 
     var target = $(this); 

     // get data-filter text 
     var title = target.data('title').toLowerCase(); 

     // collect section titles 
     sections = $(".section-title"); 

     // loop through and scroll to valid section 
     for (i = 0; i < sections.length; i++) { 
      var section = $(sections[i]); 
      var section_title = section.data('title').toLowerCase(); 

      if (section_title === title) { 
       scroll_to_element(section) 
       // console.log(target); 
      } 
     } 
    }); 
}); 

回答

1

在把href="javascript:void(0);"代替href="#"屬性的你 「是什麼」, 「爲什麼」 和 「Test1的」 鏈接

jsfiddle

+0

爲什麼?你能解釋一下推理嗎? – JokerMartini

+0

從一方面來說,'event.preventDefault()'是最好的選擇,因爲它是爲了防止默認行爲而開發的(比如在這種情況下跳轉到頁面的頂部)。而且'javascript:void(0)'在啓用了CSP的HTTPS頁面上違反了[內容安全策略](https://developer.mozilla.org/en/docs/Security/CSP)。 另一方面,使用'href =「javascript:void(0)」'可以有一些優點。這種方法的最佳描述可以在[這裏]找到(http://stackoverflow.com/a/138233/2584305) – kalym4ik