【问题标题】:How may I disable an http-equiv refresh in JavaScript?如何在 JavaScript 中禁用 http-equiv 刷新?
【发布时间】:2009-05-12 04:47:09
【问题描述】:

我正在构建一个应该定期刷新的状态页面。

所以,我在 <head> 部分进行了 http-equiv 刷新,以便每分钟刷新一次页面:

<meta http-equiv="Refresh" id="refresh" content="60"/>

但是,对于支持 JavaScript 的浏览器,我想发送一个 Ajax 请求来检查页面是否应该刷新。因此,我想在 JavaScript 中禁用 http-equiv 刷新(因为它是 Ajax 可以完成这项工作)。

我尝试使用 JavaScript/PrototypeJs 删除标签,但这不起作用:

 $('refresh').remove();

似乎浏览器会跟踪那个计时器并且不关心那个 DOM 更新。

有什么想法吗?

【问题讨论】:

    标签: javascript html browser


    【解决方案1】:

    不完全确定,但也许:

    <noscript>
        <meta http-equiv="Refresh" id="refresh" content="60"/>
    </noscript>
    

    【讨论】:

    • 我不确定这是否真的 XHTML 有效但似乎有效!
    • 嘿 - 它可以工作(刚刚在 IE8 中尝试过,打开和关闭脚本)。对此答案 +1。
    • 好的,非常感谢!结果如下:build-status.appspot.com/?app_name=your_project_name
    • 如果我能找到一种符合 W3 标准的方法会更好。 :)
    • 你也可以尝试通过 JS 从 DOM 中移除标签的节点。
    【解决方案2】:

    这将得到更好的在服务器上进行处理。有许多的工具,让您可靠地检查,看看浏览器是否支持JS(BrowserHawk是一个想到的),或者你可以检查SupportsECMAScript(在ASP.NET)浏览器对象的属性,如果写出来的不同的代码浏览器支持JS。

    【讨论】:

    • 支持JavaScript是不一样具有它启用。跨度>
    • 这是真的 - 这就是为什么我喜欢引用一个BrowserHawk工具,它实际上测试目标浏览器 SPAN>
    【解决方案3】:

    我认为没有办法禁用 http-equiv 刷新。

    状态页是您应用的第一页吗?如果没有,那么为什么不在请求状态页面之前先获取客户端的功能呢?如果是这样,那么您可能必须注入一个无 UI 的页面,该页面可以获取浏览器的功能并立即返回到真实的状态页面。所有这些都假设您不愿意使用 HTTP Header 中的用户代理字符串来获取浏览器功能。

    【讨论】:

      猜你喜欢
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      • 2016-11-23
      • 1970-01-01
      • 2016-10-02
      相关资源
      最近更新 更多