2014-01-30 64 views
0

我在開發一個網站上遇到腳本問題。它在Safari,Opera和Chrome中運行良好,但在Firefox中不起作用。Jquery加載在Firefox中不工作

當你點擊一個鏈接時,我嘗試從內部鏈接加載到div覆蓋div,然後取消隱藏。所有這些在我上面提到的瀏覽器中工作正常,但它不會在Firefox中工作,點擊功能只是打開鏈接(重新加載頁面),就像它通常會做的那樣。

任何想法,爲什麼它不適用於Firefox?任何我缺少的東西?

$(document).ready(function(){ 


    var  $ov = $('.overlay'), 
     $tp = $('#transparent'), 
     URL = ' ', 
     siteURL = "http://" + top.location.host.toString(),  
     $internal = $("a[href^='"+siteURL+"'], a[href^='/'], a[href^='./'], a[href^='../'], a[href^='#']:not('.no')"),  
     hash = window.location.hash, 
     $el, $allLinks = $("a"); 


     $tp.hide(); 
     $ov.hide(); 


     $tp.click(function(){ 

      $ov.empty(); 
      $tp.hide(); 
      $ov.hide(); 

     }); 


     if (hash) { 

      $ov.show(); 
      $tp.show();   
      hash = hash.substring(1); 
      URL = hash + " #contain"; 

      $ov.load(URL); 

      }; 

     $internal.each(function(){ 

      $(this).attr("href", "#" + this.pathname); 

      }).click(function(){ 

       $tp.show(); 
       $ov.show(); 

       $el = $(this); 
       URL = $el.attr("href").substring(1); 
       URL = URL + " #contain", 

       $ov.load(URL); 

      }); 
    }); 
+0

我有我的部分景色一個完全相同的問題。嘗試在$ ov.load(URL)之前添加警報;並看看是否有效。它爲我做了。我仍然在尋找爲什麼這樣做和/或如何解決它。 – Will

回答

0

代替 $tp.click(function(

嘗試

$(document).on('click','#transparent',function(event){ 
//do whatever you want to do 
}); 
+0

我試過了,但得到了和以前一樣的結果。還有其他建議嗎? – INC

1

我認爲你是在你點擊功能缺失的preventDefault。這告訴jQuery/javascript不要遵循默認的動作,在你的情況下,鏈接指向HREF的任何地方。

而不是

$tp.click(function(){ 
    $ov.empty(); 
    $tp.hide(); 
    $ov.hide(); 
}); 

應該

$tp.click(function(e){ 
    e.preventDefault; 
    $ov.empty(); 
    $tp.hide(); 
    $ov.hide(); 
}); 
+0

我想點擊功能甚至都不是問題。我的猜測是,我的方式針對內部鏈接,不知何故沒有按預期工作。 在其他瀏覽器中,鏈接更新如下: www.website.com/#/link 但在Firefox他們仍然是這樣的: www.website.com/link 所以我想一定有什麼錯爲此。 – INC

0

的問題不是點擊功能爲一些你的建議,它必須是一些有關的location.hash。

由於我上網查了任何其他的可能性,我發現有在Firefox中,其中同時使用window.location.hash鏈接不正確編碼的常見錯誤。

但我仍然沒有能夠解決我的問題。所以我很感激任何其他可能有助於找到解決方案的建議。

0

嘗試更改瀏覽器的默認行爲:

(event.preventDefault) ? event.preventDefault() : event.returnValue = false; 
相關問題