【问题标题】:Modify "src=" in <script> tags before loading--without jQuery在加载之前修改 <script> 标签中的“src=”——不使用 jQuery
【发布时间】:2012-10-29 18:54:09
【问题描述】:

基本上,我想这样做:

<script src=" path + '/jquery.js'"></script>

(显然这行不通。)

我有一个独立的页面加载带有&lt;script&gt; 的外部脚本,但URL 需要以变量path 为前缀(因为该页面在不同环境的不同服务器上运行)。我很容易从总是以 "?path=X" 结尾的 URL 获得 path,其中 X 是实际路径。

如果我有 jQuery,我知道我可以使用 getScript() 动态加载外部 .js 文件,但 jQuery 是我需要加载的文件之一!我这里不需要太复杂的东西,不需要担心编码或文件类型,这是一个相当简单的情况,除了不断变化的服务器。

【问题讨论】:

  • 不可能只从cdn加载jquery吗?或者这不是一个选择?
  • 不是一个选项,它可能会加载到没有真正连接到互联网的系统上。
  • 您不应该检查是否已经包含 jQuery,以免破坏您包含脚本的页面吗?还是你不在乎。
  • @KevinB 这是一个独立的页面,我看不出任何方式可以包含 jQuery。我没有包括它。我错过了什么明显的东西吗?
  • @brentonsrine 抱歉,我错过了这是一个独立页面,而不是脚本。

标签: javascript jquery include


【解决方案1】:

如果未加载 jquery,您需要使用纯 javascript。类似的东西:

        var fileref=document.createElement('script');
          fileref.setAttribute("type","text/javascript");
          fileref.setAttribute("src", path + '/jquery.js');
          document.getElementsByTagName("head")[0].appendChild(fileref);
          fileref.onload = function(){alert('loaded')};

【讨论】:

  • 这是异步的吗?还是我必须测试一下 jquery 何时完成加载?
  • 如果来自其他域,则默认为异步,如果我认为应该同步同一个域,请参阅我的编辑
【解决方案2】:

您可以通过javascript将JS文件插入头部来加载它们,同时您可以在设置源属性时使用您的变量作为路径:

<script type="text/javascript">
    var script = document.createElement('script');
        script.type = 'text/javascript';
        script.async = true;
        script.src = path + '/jquery.js';
    var head = document.getElementsByTagName('head')[0];
        head.appendChild(script);
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-24
    • 2015-06-07
    • 2023-02-11
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    • 2015-03-10
    • 2011-06-29
    相关资源
    最近更新 更多