阻止使用history.pushState显示URL

时间:2016-01-05 10:10:19

标签: javascript php jquery

我正在尝试在我正在构建的CMS中创建导航,但似乎我修复的每个问题只会给我带来更多问题。

我想做以下事情:

  1. 用户点击链接:http://cms.abayocms.dev/swatch-settings/?/site/1
  2. PHP脚本未检测到网址中的' / swatch /'并创建新的样本
  3. 问题1 :添加样本后,网址不会更改,我无法使用PHP更改标题,因为已经发送了! 因此,当用户刷新页面时,将创建新的样本等,等等。 我不想要那个,所以我添加了一个步骤:

    1. 我添加了一个新的代码和平(javascript):

      location.replace(window.location + '/swatch/' + newSwatchID);
      
    2. 问题2 :此方法刷新页面。我只是想将它添加到URL而不是刷新它。

      1. 为了防止出现上述问题,我尝试了历史.pushState' (如果浏览器支持)我添加了以下代码:

        history.pushState(null, null, window.location+'/swatch/'+newSwatchsetID);
        
      2. 第3期:这会添加历史记录事件,因此当用户点击浏览器时会回复'按钮,他再次在URL:http://cms.abayocms.dev/swatch-settings/?/site/1上结束。哪个AGAIN创建了一个新的样本。

        有没有办法阻止这种情况?

1 个答案:

答案 0 :(得分:1)

如果要更新当前状态,则必须使用history.replaceState();

只需使用history.replaceState(null, null, window.location+'/swatch/'+newSwatchsetID);

即可

这不会在History对象上添加新状态,因此history.back()将重新加载上一页而不是状态对象。