首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在.js文件中包含.js文件

在.js文件中包含.js文件
EN

Stack Overflow用户
提问于 2010-01-27 18:04:09
回答 5查看 119.9K关注 0票数 100

我想知道是否可以在另一个.js文件中包含一个.js文件?

我想这样做的原因是要将客户包含的内容保持在最低限度。我已经编写了几个.js文件,其中包含客户端需要的函数。客户端将具有他/她通过.js文件(我的.js文件)来管理的html文件。

我可以重写一个包含所有函数的新.js文件,或者,为了避免重复工作,可以想出一种方法来编写包含其他.js文件的.js文件。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-01-27 18:10:54

我基本上是这样做的,创建新元素并将其附加到<head>

代码语言:javascript
复制
var x = document.createElement('script');
x.src = 'http://example.com/test.js';
document.getElementsByTagName("head")[0].appendChild(x);

您也可以使用onload事件到您附加的每个脚本,但请测试它,我不太确定它是否可以跨浏览器工作。

代码语言:javascript
复制
x.onload=callback_function;
票数 46
EN

Stack Overflow用户

发布于 2010-01-27 18:09:06

浏览器加载时间的最佳解决方案是使用服务器端脚本将它们连接到一个大的.js文件中。确保对最终版本进行gzip/minify。单一请求--漂亮而紧凑。

或者,您可以使用DOM创建一个<script>标记并在其上设置src属性,然后将其附加到<head>。如果您需要等待该功能加载,则可以从该脚本标记上的load事件调用javascript文件的其余部分。

此函数基于jQuery $.getScript()的功能

代码语言:javascript
复制
function loadScript(src, f) {
  var head = document.getElementsByTagName("head")[0];
  var script = document.createElement("script");
  script.src = src;
  var done = false;
  script.onload = script.onreadystatechange = function() { 
    // attach to both events for cross browser finish detection:
    if ( !done && (!this.readyState ||
      this.readyState == "loaded" || this.readyState == "complete") ) {
      done = true;
      if (typeof f == 'function') f();
      // cleans up a little memory:
      script.onload = script.onreadystatechange = null;
      head.removeChild(script);
    }
  };
  head.appendChild(script);
}

// example:
loadScript('/some-other-script.js', function() { 
   alert('finished loading');
   finishSetup();
 });
票数 12
EN

Stack Overflow用户

发布于 2010-01-27 18:17:29

没有直接的方法可以做到这一点。

您所能做的就是按需加载脚本。(再次使用与Ignacio提到的类似的东西,但更简洁)。

请查看此链接,了解执行此操作的多种方式:http://ajaxpatterns.org/On-Demand_Javascript

我最喜欢的是(并不总是适用):

代码语言:javascript
复制
<script src="dojo.js" type="text/javascript">
dojo.require("dojo.aDojoPackage");

Google的闭包也提供了类似的功能。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2145914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档