2011-10-06 37 views
0

此腳本與Chrome和Safari完美的工作,但Firefox是竊聽由於一些原因:如果按左邊或右邊鍵盤上jQuery傳播Firefox錯誤?

<script type="text/javascript"> 
var $j = jQuery.noConflict(); 

$j(document).ready(function(){ 

    $j(function(){ 
     $j('.next').click(function() { 
      location.href = $j(this).attr('href'); 
     }); 
     $j('.prev').click(function(){ 
      location.href = $j(this).attr('href'); 
     }); 

    }); 

    $j('body').keydown(function(event) { 
     if(event.keyCode==82) { 
      $j(document).trigger(location.href = '/?random'); 
     } 
     if(event.keyCode==39) { 
      $j('.next').trigger('click'); 
     } 
     if(event.keyCode==37) { 
      $j('.prev').trigger('click'); 
     } 
    }); 

    $j('input, textarea').keydown(function(){ 
     event.stopPropagation(); 
    }); 

}); 
</script> 

,它需要你到下一個/上一個頁面。如果你點擊R,它會將你帶到一個隨機頁面。但是,如果您在inputtextareatextarea中鍵入內容,則會關閉鍵盤導航(因此,如果按R,左或右鍵,您可以鍵入而不出現意外的頁面加載)。

它在Chrome和Safari中很好用,但是在Firefox中它有錯誤,而鍵盤導航只能用於輸入inputtextarea。它與預期的相反。

我已禁用Firefox中的所有附加組件,但沒有幫助。當它正常工作時,有幾次隨機時間,但我無法複製它們。我難以理解爲什麼這不適用於Firefox ......任何想法?非常感謝!

回答

1

你似乎缺少event參數在你的函數:

$j('input, textarea').keydown(function(){ 
    event.stopPropagation(); 
}); 
+0

杜爾,我覺得愚蠢。謝謝您的幫助!此外,我不得不改變'$ j('body')。keydown(function(event)'to'$ j(document).keydown(function(event)'。body適用於Chrome和Safari,但不適用於Firefox。 –

+0

沒問題,其他人總是發現你的錯誤比你想象的更好(同樣適用於我):P – Blender