2012-08-04 97 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修改,事件处理程序,全局变量等......脚本的第一次调用可能已被修改。