2012-08-04 119 views
0

我正在使用jquery ajax從一個頁面加載內容到當前的一個div,類似於Gmail收發箱,垃圾箱等之間切換的方式。我正在使用jQuery的加載方法Ajax加載JavaScript和css內容

$("#divGlobal").load("newPage.html #container"); 

將我需要的內容加載到我的div中。

newpage.html #container也有關聯的javascript &與它相關聯的css文件。現在我通過將<script><link>標籤附加到<head>來加載它們,但它並不總是有效。文件始終加載(我正在觀看Firefox中的XHR信息),但並不總是正常工作。例如,如果我加載關聯文件(包括用於UI的jQuery函數),則一切正常。但是,如果我然後加載page2.html並返回到page1.html,文件加載但jQuery函數沒有響應。

有沒有更好的加載方式javascript &與我正在加載的內容相關的css文件?

+0

以這種方式加載內容是一個非常糟糕的主意;它會使頁面更難以維護,甚至會導致可能的XSS漏洞。不要發送完整的html頁面(包含重複的'',''和''標籤),請考慮使用'AJAX'以JSON等純數據語法僅載入必要的頁面數據。其他選項包括一次加載所有內容(較少的HTTP請求),或者甚至在適當的情況下使用iframe。 – 2012-08-04 01:00:22

回答

1

重新加載您之前加載的相同的JavaScript可能不會做你想做的事情,因爲所有變量和函數都已經從前一次加載中定義,並且某個狀態可能已經在前一次加載的位置。再次加載到同一頁面不是從頭開始,這可能是你想要的。

如果你控制你正在加載的頁面,那麼你可以用一種方式編寫JavaScript,只需要將內容中的腳本加載到專門設計的目錄中,以便它們按照你的要求設置它的狀態和清除取代之前加載的任何狀態,但是你必須以這種方式編寫它們。這將包括重置任何DOM修改,事件處理程序,全局變量等......腳本的第一次調用可能已被修改。