【问题标题】:Removing querystrings from the URL before page refresh在页面刷新之前从 URL 中删除查询字符串
【发布时间】:2011-07-18 14:10:51
【问题描述】:

新用户注册后,我需要将用户重定向到主页并显示 twitter 样式的欢迎消息。我最初尝试使用 jquery cookie 插件来存储我的消息并在 cookie 存在时将其显示在重定向页面上,但问题是它不适用于所有浏览器。 Safari 上的 Firfox 不会删除 cookie,因此每次刷新浏览器时都会显示该消息。代码如下:

if ($.cookie("message")) {
    TwentyQuestions.Common.ShowMessageBar($.cookie("message"), 7000);
    $.cookie('message', "any_value", { expires: -10 })
}

所以我决定改用查询字符串,但现在问题类似。主页加载时,会检测到查询字符串并显示消息。但是如何从 URL 中删除查询字符串,以便每次刷新页面时都不会显示消息?

谢谢!

【问题讨论】:

    标签: javascript jquery caching cookies url-rewriting


    【解决方案1】:

    你能做到吗:

    window.location.href = window.location.href.split('?')[0];
    

    它有效,但我不确定这是否是您正在寻找的?

    【讨论】:

    • 谢谢。这可能会奏效,但此时我真的不想再做一次重定向。
    • 如果您有“清除搜索设置”类型的链接或按钮,这将非常有用。谢谢凯尔
    【解决方案2】:

    也许问题是您试图在客户端做所有事情。相反,您应该设置与用户关联的持久 cookie。然后在后端,第一次向该用户显示主页时,向您显示欢迎信息。还要清除服务器端此用户的任何“首次用户”标志。那么下次用户访问此页面时,他们将不会看到该消息。

    您也可以做类似的事情,如果用户访问您的网站并且 cookie 不存在,您可以显示“欢迎首次使用用户”消息。

    【讨论】:

    • 如果客户端方法都不起作用,这将是我最后的选择。 @marcosfromero 的解决方案看起来对我有用。谢谢...
    • 我最终使用了这种方法...没有一个客户端方法足以在所有浏览器上工作。
    【解决方案3】:

    您可以使用哈希来代替查询字符串。

    使用特殊哈希重定向到主页,进入时将其删除。

    类似:

    if(document.location.hash == '<special hash>') {
        TwentyQuestions.Common.ShowMessageBar(...);
        document.location.hash='';
    }
    

    【讨论】:

    • 这行得通,但是 document.location.has 留下了一个尾随的 '#'。只有哈希词本身被删除。从功能上讲,这很好,但是无论如何要从 URL 中删除它?
    • 不这么认为。我从来没有。
    【解决方案4】:
    location = location.pathname + location.hash
    

    这当然会丢失任何 POST 数据,但如果您有一个查询字符串,它们可能还是通过 GET 到达您的站点。

    如果位置没有查询组件,它应该没有效果。

    【讨论】:

      【解决方案5】:

      您可以使用 cookie 执行此操作,但您必须正确删除 cookie。在过去设置过期日期适用于某些浏览器,但不适用于您发现的其他浏览器,使用 jQuery cookie 插件删除 cookie 的正确方法是发送null;来自fine manual

      @example $.cookie('the_cookie', null);
      @desc 通过传递 null 作为值来删除 cookie。请记住,您必须使用设置 cookie 时使用的相同路径和域。

      所以用这个删除它:

      $.cookie('message', null);
      

      cookie 方法应该可以正常工作。

      【讨论】:

      • 谢谢@mu。这是我首先尝试的,但它似乎并没有在 Chrome 中将其删除。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-30
      • 1970-01-01
      • 2012-05-28
      • 2011-02-02
      • 1970-01-01
      相关资源
      最近更新 更多