繁体   English   中英

使用JavaScript在src或href属性上附加时间戳

[英]Append timestamp on src or href attribute with JavaScript

在过去的两天里,我一直在寻找答案,但是找不到解决我问题的好方法。

我正在开发一个只能使用标准前端文件(HTML,CSS,JavaScript(我使用jQuery))的Web应用程序。 没有后端脚本与HTML合并。

我想要实现的是在HTML中添加<script>标记,但是将时间戳添加为变量,例如: <script type="text/javascript" src="js/javascript.js?c=1421656264439"></script>

使用PHP可以轻松实现,因为您可以将时间戳记与HTML一起添加。 但是,由于我必须仅使用前端代码,因此添加带有时间戳的scriptlink标签的最佳方法是什么,这样就不会从缓存中加载脚本了?

由于客户端使用Internet Explorer 10,因此我需要一个适用于此的答案...

有人可以帮我吗?

由于您使用的是jQuery,因此我建议您采用以下方式:

$.getScript( "js/javascript.js" );

从jQuery文档:

默认情况下,$。getScript()将缓存设置设置为false。 这会将带时间戳的查询参数附加到请求URL,以确保浏览器在每次请求时都下载脚本。

请看看jQuery getScript()

我认为这可以解决您的问题:

默认情况下,$。getScript()将缓存设置设置为false。 这会将带时间戳的查询参数附加到请求URL,以确保浏览器在每次请求时都下载脚本。

动态加载javascript / css。 同样在加载时添加随机版本。

例如http://www.javascriptkit.com/javatutors/loadjavascriptcss.shtml

无论如何,我相信您已经知道自己在做什么并不是最佳实践。 如果有更具体的要求,可以将JS / css文件的HTTP标头设置为no-cache。 无需编程语言即可在使用的HTTP服务器中设置此信息。

如何在所有浏览器中控制网页缓存?

在创建元素,设置属性并将其附加到文档类型后,由于某种原因,未在javascript.js的AJAX调用上设置beforeSend标头。 这也是使用$.getScripts('js/javascript.js');

我突然意识到我可以在script标签内尝试一个简单的document.write() 原来,它像一个魅力一样工作。

我的解决方法:

    <script type="text/javascript">
        var _c = new Date().getTime();
        document.write('<script type="text/javascript" src="js/javascrtipt.js?c='+_c+'"><\/script>');
    </script>
</body>

(我不敢相信我不能更早提出这个解决方案)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM