从url中删除哈希id

从url中删除哈希id,url,scroll,Url,Scroll,我有一个菜单头,当您单击其中一个菜单链接时,它会指向下半部分的另一个页面(我想要),因为它会找到相关的div id名称。我想知道是否有办法重新清理url,使其不在我的url中包含#id?尝试了window.location散列,这会使其停止滚动,并在url中保留#。以下是我所拥有的: 在我的菜单中:使用jquery,您可以在单击菜单时对目标页面进行POST调用 POST数据将包含要滑动到的div的id 在目标页面上,使用服务器语言(php、asp)将该id输出到js变量中,并在准备文档的幻灯片上

我有一个菜单头,当您单击其中一个菜单链接时,它会指向下半部分的另一个页面(我想要),因为它会找到相关的div id名称。我想知道是否有办法重新清理url,使其不在我的url中包含#id?尝试了window.location散列,这会使其停止滚动,并在url中保留#。以下是我所拥有的:


在我的菜单中:
  • 使用jquery,您可以在单击菜单时对目标页面进行POST调用

    POST数据将包含要滑动到的div的id

    在目标页面上,使用服务器语言(php、asp)将该id输出到js变量中,并在准备文档的幻灯片上使用jquery将该id输出到该id

    然后你会有一个干净的url,页面会滚动到你的div

    ----编辑:代码来了

    单击菜单项时,让我们使用jquery向目标页面发布帖子。我们将添加一个类,比如“mymenuitem”。我们将把这个类添加到菜单中的链接中。所以我们会

  • (onClick停止手动重定向链接) 和一个空表单(放在后面)

    
    
    然后,我们将创建必要的jquery,这样当类为“mymenuitem”的标记被单击时,我们将向目标页面发布帖子

    
    jQuery(文档).ready(函数(){
    $(“.mymenuitem”)。单击(函数(){
    //我们将按#拆分单击的href的值,因此我们将得到[0]=“关于”[1]=“滚动到”
    将_-anchor_-id_变为_-scroll_-to=$(this.attr(“href”).split(“#”)[1];
    //让我们来做POST(我们将在附加正确id的同时触发一个普通表单POST)
    $(“#slidenganchorform”)。追加(“”);
    $(“#slidenganchorform”).submit();
    });
    });
    
    然后在YOURTARGETPAGE.HTML中,我们将有类似的内容(假设我们使用php)

    
    jQuery(文档).ready(函数(){
    //让我们获取锚的位置(必须类似于信息)
    var thepositiontoscollto=jQuery('#').offset().top;
    //让我们滚动
    jQuery('html,body')。动画({scrollTop:thePositiontoScrollTo},'slow');
    });
    
    确保必须存在正确的id;)

    关于我们的信息或其他。。。
    

    (删除旧代码,因为我更改了一些变量名,如果有以前版本的部分,则很难调试。从一开始就编写所有内容)

    加载新页面时可以执行此操作

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

    但是,它也将删除查询字符串。虽然,你可以玩一点来保存它

    这可能比它的价值要麻烦得多,但是你可以用它来装配它。呵呵,我已经看过你的片段了,这就是发生的事情。。。只有当im在目标页面上,然后再次单击链接时,它才能工作并缓慢滚动到id(因此我们知道该功能可以工作)但是,如果im不在目标页面上,并单击“目标链接”,则#滚动到的内容仍会显示在url中,并跳转到ID。奇怪的是,我已经测试以确保,我们可以看到它仅在目标页面上有效。你对可能出现的问题有什么建议吗?我还警告了变量等等,一切似乎都很好:)@user2212564请再次查看Begging中的代码。我改了,现在可以用了。显然,jquery非ajax发布的早期版本不起作用。这个应该有用:)呵呵,刚刚试一下——银行假期我已经离开办公桌了。你的代码对我来说是有意义的,而且很有效,谢谢你对代码的评论。这是伟大的,看看和了解是什么和如何做的事情+感谢您的耐心。很高兴帮助您并让您理解:)