我有以下代码:
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中删除它?
答案 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。
请查看此信息以获取更多信息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');
});
});
然后我按照手动方式添加我的网页。