【问题标题】:Refreshing page via JS snippet通过 JS 片段刷新页面
【发布时间】:2016-07-02 17:42:16
【问题描述】:

在 Firefox 中测试一种无需缓存即可重新加载 HTML 页面的方法时,我在代码中包含了以下 sn-p:

<script>
window.setTimeout(function () {
    location.reload(false);
}, 5000);
</script>

这会在 5 秒后重新加载页面,但是会显示提示:“要显示此页面,Firefox 必须发送将重复之前执行的任何操作(例如搜索或订单确认)的信息。”

如果有一种方法可以通过 Javascript 进行静默刷新,一种不显示任何提示的方法?例如,如果我使用refresh Meta tag (HTML),我的浏览器会静默刷新。我想近似相同的体验,但是通过 JS(并且没有缓存)。顺便说一句,我的是一个 Django Web 应用程序,我在我的 Django 模板中注入了 JS 代码。

【问题讨论】:

  • 这是防止人们多次提交表单信息的标准行为(例如,防止电子商务系统中的双重支付)。尝试告诉 Javascript 指向“新”页面:window.location.href = '/'; - 我不确定这是否符合您的缓存要求,因此评论不回答。
  • @lewis:这不完全是我的主页,所以我必须提供不同的 href。但我明白你的意思,让我试试看。
  • 现在作为答案发布,修复了无缓存。

标签: javascript django refresh page-refresh


【解决方案1】:

这是防止人们多次提交表单信息的标准行为(例如,防止电子商务系统中的重复付款)。尝试告诉 Javascript 指向“新”页面:

尝试使用这个,将 url 设置为你自己的;

window.location = "my.url/index.html?nocache=" + (new Date()).getTime();

从这里借来的答案也解释了为什么会这样 -> How can I force window.location to make an HTTP request instead of using the cache?

【讨论】:

  • 这行得通,我要标记它。我不认为在这种情况下我可以摆脱“后退按钮”的问题,可以吗? IE。如果我只需按返回按钮,我就可以查看页面刷新后的内容。
  • 返回按钮有什么问题? - 据我所知,这应该正常对待页面,即,就像您点击了 A 链接一样。
  • 我实际上在这里提出了一个单独的问题:stackoverflow.com/questions/36043335/…
  • 已回答新问题。
【解决方案2】:

你试过 location.reload (true) 吗?如果设置为 true,它将始终从服务器重新加载。设置为 false 它将首先查看缓存。

【讨论】:

  • Shilly,哦,我以为将其设置为 true 意味着它将始终从服务器重新加载?
  • 我就是这么说的。设置为 true 它将始终从服务器重新加载。这不是需要的吗,因为您的第一句话是“...重新加载 HTML 页面而不进行缓存。”?我希望从服务器重新加载将删除确认弹出窗口。 (但这不会再次发出发布请求。)
【解决方案3】:

您收到此提示是因为您要求重新加载 POST 请求。重新加载POST 请求时,您应该始终收到此提示,因为它不是safe method

但是,如果您愿意,您可以明确地重新发送 POST 请求(尽管您可能很难找回之前发送的 POST 数据)。或者明确地向同一 URL 发送 GET 请求。

【讨论】:

    猜你喜欢
    • 2020-11-27
    • 2011-01-27
    • 2012-08-13
    • 1970-01-01
    • 2017-12-22
    • 1970-01-01
    • 2015-03-04
    • 1970-01-01
    • 2020-09-18
    相关资源
    最近更新 更多