如何只包含一次javascript文件

How to include javascript file only once

本文关键字:javascript 文件 包含一      更新时间:2023-09-26

我想给客户端一个可以包含在他们网站的HTML块,这个HTML将包含一些表格和图像,以及一个将对HTML块进行操作的javascript。所以我给他们 HTML :

<a data-theme="1" data-srv="http://localhost:50987/" class="block1" href="http://myserver/payment/Details">outer information</a><script type="text/javascript" src="http://myserver/Scripts/checkout.js"></script>

在结帐中.js如果文档中不存在 Jquery 并对元素 $('a.block1') 进行操作,我已经包含了 JQuery......问题是当有人在同一页面上多次放置此 HTML 块时,我希望客户端不会多次调用"checkout.js",

我尝试在"checkout.js"中声明全局var并检查它是否存在,停止多次执行相同的操作效果很好,但我想一起停止对 JS al 的调用。

Javascript在加载后运行,如果JS被多次引用,则无法停止JS运行。它不会被多次加载,所以它再次运行的开销基本上为零。

要阻止 javascript 的行为再次发生,只需将检查放在文件的顶层,将文件的其余部分放在条件中,然后写入全局变量以确保不会再次运行。

if (window._your_unique_id === undefined) {
    window._your_unique_id = true;
    // the rest of your javascript
}

这将意味着脚本运行中的任何内容。你仍然可以在 if 语句中定义任何你喜欢的东西,但如果你在其中定义函数和变量,你可能必须将它们显式地放在窗口对象上,因为它们本来是局部的(但是,无论如何,隐式定义全局的东西都是不好的做法,所以如果你的代码结构良好,它应该没有任何区别)。

只需将代码部署为模块即可。

即。

(function(window){
  if(window.CheckoutModule) return;
  // now you're certain there's no global module loaded
  var CheckoutModule = window.CheckoutModule = {};
  // you can, ie, add a jQuery check here.
  if('undefined' != typeof jQuery) {
    // do your jQuery thing here.
  }
  return ;
})(window, jQuery);