jQuery添加查询字符串到脚本加载?

Zar*_*ani 3 javascript ajax jquery

将此js添加到我的页面:

$("#divExample").append("<script type='text\/javascript' src='\/scripts\/test_code.js'><\/script>");
Run Code Online (Sandbox Code Playgroud)

导致请求:

http://.../scripts/test_code.js?_=1395691742415
Run Code Online (Sandbox Code Playgroud)

我需要消除查询字符串,因为它阻止js文件被缓存.我最好的猜测是,这在某种程度上与jQuery ajax有关,它在执行某些类型的调用时会附加相同类型的查询字符串(例如jsonp).

关于我为什么这样做的背景:我需要推迟脚本加载(实际上是更大的js块的一部分),直到页面就绪事件完成之后.以上只是一个显示相同症状的减少样本.

目前正在使用jQuery 1.8.3,但我真的希望答案不包括升级,因为这会破坏依赖项.

MrC*_*ode 5

将jQuery缓存设置为全局true以防止这种情况发生.

$.ajaxSetup({
    cache: true
});
Run Code Online (Sandbox Code Playgroud)

虽然这看起来只是针对ajax的配置,但它会影响<script>你正在使用的标签.

如果您不想将全局应用于所有ajax请求,则可以使用普通Javascript(无jQuery)来执行此操作:

var s = document.createElement('script');
s.type = 'text/javascript';
s.src = 'test.js';
document.getElementById("divExample").appendChild(s);
Run Code Online (Sandbox Code Playgroud)

第三个选项是你可以$.ajax用来导入脚本,如下所示:

$.ajax({
  url : 'test.js',
  type : 'script',
  cache : true,
  success : function(){

  }
});
Run Code Online (Sandbox Code Playgroud)