我有两个JavaScript文件:
onload
设置工作并将事件处理程序附加到控件MAP
小部件加载文档时,scripts.js通过加载map.js并调用MAP
来初始化initMap
对象:
/** ON DOCUMENT LOAD **/
$(document).ready(function() {
$.getScript('lib/map.js', function() {
/** Generate a new map **/
MAP = initMap(10,mapDefault);
});
有一个按钮允许用户重新生成地图,该地图也会调用initMap
。例如:
$('input#regenerateButton').click(function() {
$.getScript('lib/map.js', function() {
MAP = initMap($('input#mapSize').val(),mapDefault);
});
});
我是否需要再次重新加载脚本map.js,因为此时它可能已经加载了?
此问题已被问及previously,但我不相信有关$.getScript
多次通话的部分已得到解答。
答案 0 :(得分:2)
默认情况下,$.getScript()
函数会破坏缓存 - 这意味着每次执行时都会再次获取文件。仅当js文件不是静态js文件时才有用,即如果它包含一些服务器端代码(例如PHP),它根据会话可用的其他一些数据自定义数据。
如果你有一个静态的js文件,你可以通过这样做来禁用这种行为
$.ajaxSetup({
cache: true
});
(请注意,这对于所有ajax调用都是全局的。)
如果您的脚本是静态文件,则无需使用其他$.getScript()
重新加载脚本。如果您不尝试重新加载它,则无需启用AJAX缓存。
有一个例外,即使它是静态的,也不需要重新加载脚本:如果MAP脚本存储了一些在执行initMap
时未重置的信息。那将是糟糕的设计,但在剧本中可能就是这种情况。