我可以使用javascript来防止一遍又一遍地加载相同的脚本吗?

时间:2011-04-05 20:54:29

标签: javascript

为自定义库编写应用程序,并将所有脚本文件放在每个库文件夹内的资源文件夹中 -

是否可以启用一个变量来阻止页面加载其本地JavaScript文件,而是从主页面的资源文件夹加载?试图避免必须对其进行硬编码。

基本上我真正想要的是我的脚本文件能够有一个变量的起始路径 - IE

(script src="(path)load.js" type="text/javascript")(/script)

其中path为空白“”或主要主站点 - “http://www.site.com/resources/”

某些文件是CSS文件,所以我不确定类方法是否能正常工作 - 还有 - 一种方法来引用网站的根目录?类似于使用../但只是为了获得根html路径。

更多信息-----

我所拥有的布局是每个画廊都是一个单独的文件夹 - (例如,摄影,绘画,绘画等 - 都将是单独的文件夹)。它们每个都包含自己的资源和文件夹。这是我可以上传一个画廊到一个网站,一切都将很好地打包。但是 - 如果我在一个网站上运行多个图库 - 就像投资组合网站一样,每个页面都会加载自己的一组资源,这可能不是一个好主意。

资源是 - 缩略图,图像,xml(这些都是特定于各个图库的)但是它们每个都有一些用于函数的javascript文件,一个css文件和一些使图库可操作的图像(箭头和之类的。)

如果有多个gallerys,我只希望能够从根网站资源文件夹中加载加载到头文件中的脚本

4 个答案:

答案 0 :(得分:1)

您可以将所有代码放在一个类名下,例如Mydata.yourvariable

然后检查..

if (Mydata) { //your script has already been loaded }

它类似于jQuery对$

的作用

答案 1 :(得分:0)

答案 2 :(得分:0)

也许你可以尝试这样的事情:

index.html (或其他html文件)中执行:

<html>
<head>
<!-- use this if you need custom location, omit for the default one -->
<script type="text/javascript">
var GALLERY_PATH = "/gallery/";
</script>
<!-- ------------------- -->
<script type="text" src="/gallery/gallery.js"></script>
</head>
<body>
...
</body>
</html>

<强> gallery.js

var GALLERY_PATH = GALLERY_PATH || "http://mysite.com/default-gallery-location/";
document.write('<script type="text/javascript" src="' + GALLERY_PATH + '/js/_gallery.js"></script>')
document.write('<link rel="stylesheet" type="text/css" href="' + GALLERY_PATH + '/css/gallery.css">');
...

通过这种方式,您可以轻松地使用1-liner包含所需的所有文件,并且所有文件都会加载一次。希望它有所帮助,当然,如果我正确理解问题;)

答案 3 :(得分:0)

如果您发现使用javascript难以处理它,您可以从服务器执行此操作。这取决于问题是双重调用还是使用的Kb下载资源。

在最后一种情况下,您可以简单地为Web服务器启用一些缓存驱动程序,如Varnish或MemCache。放入缓存后,您不必再担心双文件加载了。

如果你想避免来自同一个javascript脚本的大量加载,你可以添加一个本地计数器,然后在加载一次时加1。您将编辑初始调用函数以测试它当前是否已加载,然后避免。

如果您有很多js文件,并且只是想避免再次调用相同的资源两次,请使用会话cookie来存储计数器。