【问题标题】:Using external javascript files in a .js file在 .js 文件中使用外部 javascript 文件
【发布时间】:2011-02-04 12:16:51
【问题描述】:

我想在另一个 javascript 文件中使用外部 javascript 文件。例如,我可以将所有全局变量存储在 globals.js 文件中,然后从网站逻辑 logic.js 调用。然后在 index.html 中,我会插入标签。如何在 logic.js 中使用 globals.js?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    你也可以这样做:

    $(document).ready(function(){
        $('body').append($('<script src="/path/to/script/foo.min.js"></script>'));
    });
    

    在需要引用包含的 js 文件中的某些内容之前使用该行。

    【讨论】:

      【解决方案2】:
      function loadExternalJS(TARGET_URL){
      var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();
      xhr.open('GET', TARGET_URL, false);
      xhr.send(null);
      var code = xhr.responseText;
      var dScript = document.createElement('script');
      try {
      dScript.appendChild( document.createTextNode(parsed) );
      document.body.appendChild(dScript);
      } catch(e) {
      dScript.text = parsed;
      document.getElementsByTagName('head')[0].appendChild(dScript);
      }
      xhr = null;
      

      【讨论】:

      • 这可行,但前提是 OP 的 logic.js 的解析不依赖于 globals.js 中定义的任何内容。假设他实例化了一些在全局变量中创建的对象。如果尚未加载全局变量,那将杀死 logic.js。当然,使用 jquery 的 ready() 或 mootools domready 完成的适当的 init() 函数可以解决这个问题。
      • 此脚本暂停处理,直到浏览器加载脚本。
      【解决方案3】:

      Javascript 没有任何隐含的“包含此其他文件”机制,例如 css 的 @include。您只需在标签中的逻辑文件之前列出您的全局文件:

       <script type="text/javascript" src="globals.js" />
       <script type="text/javascript" src="logic.js" />
      

      如果保证在逻辑文件中的任何内容启动之前全局变量可用,则可以在调用 init() 或任何函数之前执行慢速轮询循环以查看某些特定变量是否可用。

      【讨论】:

      • 作为轮询循环的替代方案,您可以指定 global.js 在加载时调用的函数引用,然后让 logic.js 将该引用设置为它的 init() 函数。当然,您必须包含代码以确保 init() 函数不会被调用两次。
      • 可以使用javascript,检查我的答案。
      【解决方案4】:
      document.write('<script type="text/javascript" src="globals.js"></script>');
      

      编辑:实际上,这可能不适用于您的目的,因为 global.js 变量在 logic.js 完成之前无法访问。您可以将 logic.js 包装在一个在 global.js 加载后调用的函数中。否则,我认为没有办法按照您的要求进行操作。

      【讨论】:

        【解决方案5】:

        只需确保在您的 index.html 中引用了这两个文件。

        【讨论】:

        • 顺序很重要,但正如 Marc 所说。
        • 谢谢,这很好,只是出于好奇,有没有办法不使用html中的
        猜你喜欢
        • 1970-01-01
        • 2010-09-23
        • 2020-11-15
        • 2018-06-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-02-15
        • 2012-06-19
        相关资源
        最近更新 更多