2013-08-05 270 views
0

當我的頁面上的JavaScript從CDN(或任何外部源)加載時,它會加載多次(5+)次。本地的JS文件只加載一次。外部JS加載多次

下面是相關HTML:

<html> 
    [...] 

    <body> 
    [...] 

    <script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
    <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-migrate/1.2.1/jquery-migrate.min.js"></script> 
    <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.3.1/jquery.cookie.min.js"></script> 
    <script src="//cdnjs.cloudflare.com/ajax/libs/modernizr/2.6.2/modernizr.min.js"></script> 
    <script src="//cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/2.3.2/js/bootstrap.min.js"></script> 
    <script src="js/index.min.js"></script> 
    <script src="js/bootstrap-notify.min.js"></script> 
    </body> 
</html> 

下面是Chrome的資源選項卡中的請求的屏幕截圖:

Chrome Resources

正如你所看到的,bootstrap.min.js(外部)加載多次 - 但是bootstrap-notify.min.js(本地)加載一次。

這發生在任何外部來源,不僅cdnjs.cloudflare.com。編號: 修正了這個問題。這是一個與我的JavaScript中的AJAX請求有關的問題。

+0

這是否發生在所有的瀏覽器?你可以做一個現場演示? – Blender

+0

@Blender好的,所以我從我的document.ready($(function(){code});)函數中刪除了我的主JS文件中的所有內容,並且它不會多次加載。來自該文件的JS添加到問題。 – thesbros

回答

1

$.fn.getPage是你的問題。您將整個 HTML文檔插入到當前文檔中,該文檔還將插入<script>標籤。

只有更換閥體:

$(data).find('body').children().appendTo(self.find('body').empty()); 
+0

不,它的作用像$(「element」)。getPage(args),它只替換該元素的html,它將是pageContent,它是body內的div。 它使用jQuery AJAX檢索頁面(home.html等)。 好吧,所以它只會在cookie沒有設置時加載多次(current_page等)。一旦它們被設置(你點擊導航欄中的一個頁面並刷新),它不會多次加載。 – thesbros

+0

好的!修復。檢查current_page是否未定義時出現問題。 – thesbros