如何只包含一次javascript文件

时间:2013-11-18 14:26:41

标签: javascript

我想给客户一个他们可以包含在他们网站中的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>
在checkout.js中我已经包含了JQuery,如果文档中不存在Jquery并对元素$('a.block1')进行操作......问题是当有人将这个HTML块放在同一个块上时页面,我希望客户端不会再调用“checkout.js”一次,

我已经尝试在“checkout.js”中声明全局变量并检查它是否存在,停止执行相同的操作然后一次就好了,但我想停止对JS al的调用。

2 个答案:

答案 0 :(得分:0)

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

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

if (window._your_unique_id === undefined) {
    window._your_unique_id = true;

    // the rest of your javascript
}

这将在脚本运行中没有任何意义。你仍然可以在if语句中定义你喜欢的任何东西,但是如果你在那里定义函数和变量,你可能必须明确地将它们放在window对象上,因为它们本来就是本地的(但是,这是不好的做法,无论如何都要隐式定义全局,所以如果你的代码结构合理,它应该没有任何区别。)

答案 1 :(得分:0)

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

(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);