2015-09-20 164 views
0

我有一個簡單的JS/Jquery腳本,允許用戶瀏覽(通過散列菜單鏈接和ScrollTop)到頁面部分的特定部分(在這種情況下,/ guides /部分)。該腳本在Chrome上運行得很好。然而,在Firefox上,它似乎沒有被觸發。JQuery ScrollTop適用於Chrome瀏覽器,但不適用於Firefox瀏覽器

在撰寫本文時,我的Chrome版本是:45.0.2454.85
和我的火狐40.0.3

的URL有問題的網站:genesistutorials101.com
與哈希的聯繫可以發現在菜單下。
我已經運行該腳本:

//HASH # NAV 
$(function(){ 

if (window.location.hash) { 
    var target = $(window.location.hash); 
    navigateToTarget(target); 
} 

$('.nav-primary a[href*="#"]').on('click', function(event) { 
    //console.log("testing"); 
    var href = $(this).attr("href"); 
    var target = $(href.substr(href.indexOf("#"))); 
    navigateToTarget(target); 
}); 
}); 

function navigateToTarget(target) { 
if(target.length) { 
    event.preventDefault(); 
    $('html, body').animate({ 
    scrollTop: target.offset().top - 155 
    }, 1000); 
} 
} 

我讀了另一個計算器線程Firefox不喜歡當函數()丟失「事件」中,但我想,也有沒有任何明顯的變化。

因此,出於測試目的,請繼續並點擊chrome和firefox上導航菜單上的任何初學者鏈接,以瞭解其差異。

爭取解決任何幫助或指針將不勝感激

問候
Sotkra

+0

您是否在控制檯中發現任何錯誤? – Tushar

回答

4

的問題是,我們在調用event.preventDefault()navigateToTarget函數中,並沒有一個名爲event有變量。

它適用於Chrome(也可能在IE),因爲它們具有全局屬性window.event,但該屬性不是跨瀏覽器,並且它不適用於沒有此屬性的瀏覽器。

你應該刪除event.preventDefault(),一切都會正常工作。

+0

感謝您的澄清Buzinas。我不知道整個window.event的情況。我會更加關注這種類型的細節。 – Sotkra

+0

哇,我在選擇答案作爲正確答案之前犯了錯誤,沒有三重檢查一切。該代碼現在無法在/ guides /頁面之外工作。如果我是指南頁面以外的地方,點擊菜單鏈接不會觸發任何內容。如果我在指南頁面中,它可以正常工作。 – Sotkra

+0

好的,問題的關鍵是簡單地擺脫event.preventDefault();我會回覆你的問題,但我建議你在上面添加我的註釋,以提高它的可見度。歡呼並再次感謝。 – Sotkra

相關問題