2014-09-11 62 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