我尝试使用以下语法动态地向我的网站添加一些JavaScript:
$('head').append('<script type="text/javascript" src="js/myjavascript.js"><\/script>');
它会加载,但是当我观察抛出chrome网络标签时,我发现它的请求是?
例如,在这种情况下,JavaScript的请求URL是:
http://mywebsite/js/myjavascript.js?_=1406082938676
我不知道最终的数字是什么,没有把它设置在任何地方,但我想用这个数字浏览器无法缓存我的JavaScripts。
任何人都知道如何在没有该标志的情况下动态添加JavaScript吗?
答案 0 :(得分:4)
jQuery默认情况下使用当前时间戳值附加下划线参数。这是为了避免脚本被缓存(即每次执行追加时,浏览器都会下载脚本)。
您可以更改此行为并允许缓存。从this answer开始,您可以像这样添加ajaxPrefilter
:
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
if ( options.dataType == 'script' || originalOptions.dataType == 'script' ) {
options.cache = true;
}
});
答案 1 :(得分:3)
最终的数字是加载脚本的随机数,而不是来自缓存。 以下是它的工作原理:
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进行没有此键的加载