Javascript 当我在一个页面上有多个Like按钮时,是否有任何方法可以防止同一个JS/CSS文件被多次加载?

Javascript 当我在一个页面上有多个Like按钮时,是否有任何方法可以防止同一个JS/CSS文件被多次加载?,javascript,asynchronous,facebook-like,Javascript,Asynchronous,Facebook Like,我有一个页面,上面有多个“喜欢”按钮,每个按钮指向不同的URL 不幸的是,每个“Like”按钮都请求一个JS和CSS脚本,页面上有许多“Like”按钮,每个按钮都会一次又一次地加载相同的脚本 为了澄清,我正在使用xfbml并异步加载JS-SDK,“connect.facebook.net/en_US/all.JS”文件只会被拉下来一次 我遇到问题的文件有: 我假设这是因为每个插入的元素都需要这些资源 如果你看一下,你会发现他们懒懒地插入Facebook/Twitter等元素,以此规避了这

我有一个页面,上面有多个“喜欢”按钮,每个按钮指向不同的URL

不幸的是,每个“Like”按钮都请求一个JS和CSS脚本,页面上有许多“Like”按钮,每个按钮都会一次又一次地加载相同的脚本

为了澄清,我正在使用xfbml并异步加载JS-SDK,“connect.facebook.net/en_US/all.JS”文件只会被拉下来一次

我遇到问题的文件有:

我假设这是因为每个插入的
元素都需要这些资源

如果你看一下,你会发现他们懒懒地插入Facebook/Twitter等元素,以此规避了这一点。但是,如果您将鼠标移到其中的一些页面上,您会注意到JS和CSS的相同部分仍然被多次不必要地加载


有没有人有一个解决方案,可以将这些文件中的每个文件限制为每页一个请求,而不管上面有多少个相似的按钮?

我认为,如果您使用HTML5代码,情况就不再是这样了。您有一个基本代码,在一个页面上只使用一次:

<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) {return;}
  js = d.createElement(s); js.id = id;
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1";
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>

(功能(d、s、id){
var js,fjs=d.getElementsByTagName[0];
if(d.getElementById(id)){return;}
js=d.createElement;js.id=id;
js.src=“//connect.facebook.net/en_US/all.js#xfbml=1”;
fjs.parentNode.insertBefore(js,fjs);
}(文档“脚本”、“facebook jssdk”);
还有一些类似按钮、注释等的代码,比如这个,你可以在页面上使用n次:

<div class="fb-like" data-href="YOUR_URL" data-send="true" data-width="450"></div>


这应该只加载一次资源。

第一个问题写得很好。欢迎来到堆栈溢出!