从url中删除哈希

时间:2016-07-07 13:04:43

标签: jquery hash

我有以下代码:

 jQuery(document).ready(function($) {
   $('.tab-title').on('click', function(e) {
      window.location.hash = $(this).attr('href');
      e.preventDefault();
    var _self = $(this);
    $('.tab').removeClass('active');
    _self.parent().addClass('active');
    });
});

和我的PHP

<div class="tab active">
    <a href="<?php the_field('service_name');?>" class="tab-title"><?php the_field('service_title'); ?></a> 
</div> 
 <div class="tab-content">  
<h2><?php the_field('service_title'); ?> </h2>
    <p><?php the_field('service_desc'); ?></p>
    <p><?php the_field('service_area');?></p>
</div> 

网站网址:mysite.com/services/marketing/#internet

问题是网站网址中包含的(#)。是否可以从URL中删除它?

2 个答案:

答案 0 :(得分:4)

试试这个:

history.pushState("", document.title, window.location.pathname);

<强> EDITED

如果您只想从网址中删除#,请尝试使用以下代码:

history.pushState({}, document.title, location.href.replace('#', "/"));

pushState()方法

pushState()接受三个参数:状态对象,标题(当前被忽略)和(可选)URL。让我们更详细地研究这三个参数中的每一个:

  • 状态对象:状态对象是一个JavaScript对象 与pushState()创建的新历史记录条目相关联。 每当用户导航到新状态时,就会出现一个popstate事件 已解雇,并且该事件的state属性包含该副本 历史条目的状态对象。

    state对象可以是任何可以序列化的对象。因为 Firefox将状态对象保存到用户的磁盘中,以便它们可以 用户重新启动浏览器后恢复,我们施加了大小限制 一个状态的序列化表示的640k字符 宾语。如果传递序列化表示形式的状态对象 对于pushState()大于此值,该方法将抛出异常。 如果您需要更多空间,我们鼓励您使用 sessionStorage和/或localStorage。

  • 标题: Firefox目前会忽略此参数,尽管它可能会使用 它在未来。在这里传递空字符串应该是安全的 反对未来对方法的改变。或者,你可以传递一个 你正在搬家的州的简称。
  • 网址:此历史记录条目的网址由此参数指定。注意 调用后浏览器不会尝试加载此URL pushState(),但它可能会稍后尝试加载URL 用户重启浏览器后。新URL不需要 绝对;如果它是相对的,它相对于当前的解决 URL。新网址必须与当前网址的来源相同; 否则,pushState()将抛出异常。这个参数是 可选的;如果未指定,则将其设置为文档的当前值 URL。

请查看此信息以获取更多信息History_API

答案 1 :(得分:0)

经过几个小时,心情清晰,我找到了解决方案。

jQuery(document).ready(function($) {
   $('.tab-title').on('click', function(e) {
      window.location.hash = $(this).attr('href');
      history.pushState({}, document.title, location.hash.replace('#', "/"));
      e.preventDefault();
    var _self = $(this);
    $('.tab').removeClass('active');
    _self.parent().addClass('active');
    });
});

然后我按照手动方式添加我的网页。