使用Javascript加载没有缓存的外部<script>

Ni *_* Le 2 javascript jquery

我想将一个外部javascript文件加载到页面中,并确保它没有缓存.我没有访问php所以我不能生成文件名后的随机字符串.

在PHP中,脚本看起来像这样:

<script src="http://site.com/cool.js?<?php echo $randomnumber; ?>"></script>
Run Code Online (Sandbox Code Playgroud)

有没有办法只使用javascript做这样的事情?

epa*_*llo 16

使用jQuery的getScript而不是脚本标记.

$.getScript("http://example.com/cool.js");
Run Code Online (Sandbox Code Playgroud)

或纯JavaScript

var scr = document.createElement("script");
scr.src = "http://example.com/cool.js" + "?ts=" + new Date().getTime();
document.getElementsByTagName("head")[0].appendChild(scr);
Run Code Online (Sandbox Code Playgroud)


mar*_*ful 5

就像src在PHP中一样,只需将随机字符串附加到脚本的。为此,您需要<script>使用JS 注入标签。

var s = document.createElement('script');
s.type = 'text/javascript';
s.src = 'path/to/file?' + new Date().getMilliseconds();

document.getElementsByTagName('head')[0].appendChild(s);
Run Code Online (Sandbox Code Playgroud)

  • 仅供参考:如果你真的很幸运,getMilliseconds() 可以重复。 (2认同)
  • 生日悖论说,只有32个请求,一个值重复的机会就有50%。请求不经常发出的事实仅意味着,如果重复值*与缓存版本匹配,则*更多*可能是脚本的旧版本,而不是最新版本。最好使用更长的字符串,例如`getTime()`,它只能在很短的时间范围内重复。当以这种方式使用时,`getMilliseconds()`实际上只是一个**非常低熵的随机数。 (2认同)