2014-09-11 60 views
0

我有動態加載內容的問題。jQuery/JS不刪除HTML上的JS功能擦除?

我使用ajax調用來加載HTML內容而無需刷新瀏覽器,並且頁面有自己的JavaScript庫,需要加載才能使它們工作。所以我將JavaScript內容嵌入到我用ajax加載的HTML中。

問題是,即使具有嵌入式JavaScript的HTML被移除,這些JavaScript函數的功能仍然會被加載,無論HTML和JavaScript一起被刪除。

這意味着,如果某個頁面被多次加載,操作將觸發相同的頁面加載次數。

如何確保JavaScript庫只加載到瀏覽器中一次,保留用ajax調用加載JS庫源的功能,而不僅僅是源文件鏈接,然後在ajax之後再次加載它們與所需的HTML一起被加載? (在加載ajax的同時/之前加載JS文件)

回答

0

一旦將JavaScript文件加載到瀏覽器的內存中,它將一直保留在那裏,直到您加載另一個頁面。

所以......無論你如何加載它(通過AJAX,或只是通過腳本鏈接加載頁面,或者只是將其嵌入到原始HTML中),一旦它存在,它就會一直存在,直到你去另一個頁面。

如果你希望你的客戶端代碼只在某些情況下執行,你需要控制它。

從我的角度來看,您的最佳選擇是隻加載一次您的庫,並在執行應該開始,結束和重複(如果需要)時通過代碼確定。

+0

問題是,JavaScript或jQuery把''不是在HTML中,而是在eval中。使用螢火蟲我可以看到我的腳本加載爲'jquery.min.js第2行eval(1)'。所以它只是增加了這些「evals」而沒有查看文件是否相同,因此動作會隨着JS文件的加載而激發很多次。 – Matt 2014-09-11 11:20:01

+0

我擔心你需要更改代碼並加載腳本通常而不是通過AJAX調用來完成 – Bardo 2014-09-12 10:58:22