【问题标题】:Changing version numbers on window.reload()在 window.reload() 上更改版本号
【发布时间】:2014-03-20 03:24:26
【问题描述】:

如果我的代码中有以下<script> 标签:

<script src='http://your.site.com/js/big_script.js?version=1'></script>

如何让这个版本号随着该页面上的每个后续window.reload() 操作自动更新?

Page refreshes...

<script src='http://your.site.com/js/big_script.js?version=2'></script>

Page refreshes...

<script src='http://your.site.com/js/big_script.js?version=3'></script>

等等...仅通过使用 JavaScript?

我知道localStorage 在这里会派上用场,但在<script> 标签本身内实现它?有没有办法做到这一点,或者有其他方法可以做到吗?

在这种情况下,我只关注基于 JavaScript 的解决方案,因为该应用程序是纯 HTML5/JavaScript/CSS3。

提前致谢!

【问题讨论】:

  • 如果用户打开另一个浏览器选项卡到相同的 URL,你想增加计数器吗?
  • @MjrKusanagi 此应用程序不会在标准浏览器中运行。它将在 kiosk 模式下运行,无法访问触摸屏界面上的键盘。

标签: javascript html refresh


【解决方案1】:

正如您所指出的,localStorage 可能是要走的路。做这个客户端的缺点是你必须后期绑定你的脚本标签。我会尝试:

var my_site_cntr = parseInt(localStorage.getItem('mySite.counter')||0);
my_site_cntr++;
localStorage.setItem('mySite.counter', my_site_cntr);
var scrptElem = document.createElement("script");
    scrptElem.type = "text/javascript";
    scrptElem.src = "http://your.site.com/js/big_script.js?version=" + my_site_cntr;
    scrptElem.innerHTML = null;
document.body.appendChild(scrptElem);

来源:

【讨论】:

  • 谢谢... 新的<script> 元素是否仍会立即附加在<body> 标记之后,还是会转到其下的子元素列表的最后并形成一个新的那里有子元素?
  • 它将被附加到正文元素,因为我使用了选择器document.body。您可以通过将document.body 更改为document.getElementById('id') 之类的内容,将其附加到您想要的任何其他元素。您可以在此处阅读有关此选择器和其他 JS DOM 选择器的更多信息:w3schools.com/jsref/met_doc_getelementbyid.asp
猜你喜欢
  • 2011-03-19
  • 1970-01-01
  • 2016-11-14
  • 2013-11-07
  • 1970-01-01
  • 1970-01-01
  • 2014-09-30
  • 2015-08-07
  • 1970-01-01
相关资源
最近更新 更多