jQuery追加没有时间戳参数

jQuery append without the timestamp param?

本文关键字:时间戳 参数 追加 jQuery      更新时间:2023-09-26

我试图添加一些JavaScript到我的网站动态使用这种语法:

$('head').append('<script type="text/javascript" src="js/myjavascript.js"><'/script>');

它加载,但是当我观察抛出chrome网络选项卡时,我观察到它持有?的请求比如在这个例子中,JavaScript的请求url是:

http://mywebsite/js/myjavascript.js?_=1406082938676

我不知道最后的数字是什么,没有设置它在任何地方,但我想,有了这个数字,浏览器是无法缓存我的javascript。

谁知道如何动态添加JavaScript没有那个标志?

jQuery默认在下划线参数后面附加当前时间戳值。这是为了避免脚本被缓存(即每次执行append时,浏览器都会下载脚本)。

您可以更改此行为并允许缓存。从这个答案中,您可以像这样添加一个ajaxPrefilter:

$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
  if ( options.dataType == 'script' || originalOptions.dataType == 'script' ) {
      options.cache = true;
  }
});

最后一个数字是随机的,不是从缓存加载脚本。下面是它的工作原理:

var script = document.createElement('script');
                    script.type = 'text/javascript';
                    script.src = '/js/' + pagename + '.js?rand=' + Math.random();
                    document.getElementById('dynamicScripts').appendChild(script);

地点:

dynamicScripts是DOM元素。可以是'body'

你可以使用ajaxPrefilter加载没有这个键