"清算网址"删除单独页面之间的哈希

时间:2013-03-21 17:23:18

标签: jquery

我有一个独立运行的标签系统。问题是如果有人点击带有simlar标签系统的另一个页面的链接,即使使用不同的类,也会存储过去的哈希值。

所以,说它们在第1页,打开的标签结束了网址: /部门/废物回收的程序?whatToRecycle#whatToRecycle

然后,转到第2页,它有一个完全不同的网址, /部门/设施/?goals2013#whatToRecycle

所以有人点击了“2013 Goals”,导致了一个不同的url并添加了“?goals2013”​​,但之后它会附加“#whatToRecycle”。这是上一页中使用标签系统点击的最后一个标签。

如果我能弄清楚如何在页面加载时调用某些函数来删除所有功能?然后它应该工作,我在想。

问题是左侧导航栏包含指向特定选项卡的所有链接,因此有人不必来到第1页或第2页,然后单击第三个选项卡。他们点击任一页面上的第三个标签,点击页面,该标签打开。

链接列表的HTML:

<ul class="enviroNav">
    <li class="bottomBorder"><a href="?">WHAT WE DO</a></li>
    <li class="liWithSubs"><a href="/departments/site-facilities/environment">ENVIRONMENT</a></li>
    <li><a href="/departments/site-facilities/iso-14001?iso14001">ISO 14001</a></li>
    <li class="doubleIndentLi"><a href="/departments/site-facilities/iso-14001?environmentalPolicy">-Environmental Policy</a></li>
    <li class="doubleIndentLi"><a href="/departments/site-facilities/iso-14001?impactAreas">-Impact Areas</a></li>
    <li class="doubleIndentLi"><a href="/departments/site-facilities/iso-14001?goals2013">-2013 Goals</a></li>
    <li><a href="/departments/site-facilities/environment/waste-recycling-programs?whatToRecycle">Recycling/Waste</a></li>
    <li class="doubleIndentLi"><a href="/departments/site-facilities/environment/waste-recycling-programs?whatToRecycle">-What To Recycle</a></li>
    <li class="doubleIndentLi"><a href="/departments/site-facilities/environment/waste-recycling-programs?whereToRecycle">-Where to Recycle</a></li>
    <li class="doubleIndentLi"><a href="/departments/site-facilities/environment/waste-recycling-programs?quickTips">-Quick Tips</a></li>
    <li class="doubleIndentLi"><a href="/departments/site-facilities/environment/waste-recycling-programs?seeResults">-See Results</a></li>
    <li class="bottomBorder"><a href="#">Energy</a></li>
    <li class="liWithSubs"><a href="#">COMMUNITY</a></li>
    <li><a href="#">-Upcoming Events</a></li>
    <li class="bottomBorder"><a href="?">-Past Activities</a></li>
    <li class="liWithSubs"><a href="?">HOW WE&#39;RE DOING</a></li>
    <li><a href="#">-See the Results</a></li>
    <li class="bottomBorder"><a href="#">-Success Stories</a></li>
    <!--    <li class="bottomBorder"><a href="#">WHY WE CARE</a></li>
    <li class="bottomBorder"><a href="#">EMPLOYEE WELLNESS</a></li>-->
    <li class="bottomBorder"><a href="/departments/site-facilities/ehs-training">ENVIRONMENTAL HEALTH &amp; SAFETY(EHS) PROGRAM</a></li>
    <li><a href="?">COMMUNITY LINKS</a></li>
</ul>

此例程有效:

    function setupSubNav(){
  pathName = window.location.href;
  $('.hiddenSection').css('display','none');
  pathArray = pathName.split('#');
  param = pathArray[pathArray.length-1];
  if(pathArray.length>1){
    showWasteSection(param,$('.' + param + 'Trigger'));
  }
  else
  {
     if ($('body.fervens-a .pageTabsWaste li')) {
        var sectionNameWaste = $($('body.fervens-a .pageTabsWaste li')[0]).attr('class').split('Trigger')[0];
            showWasteSection(sectionNameWaste, $($('body.fervens-a .pageTabsWaste li')[0]));
        }
  }
    $('body.fervens-a .pageTabsWaste li').click(function(){
        if (!($(this).hasClass('current'))) {
            var sectionNameWaste = $(this).attr('class').split('Trigger')[0];
            showWasteSection(sectionNameWaste, $(this));
        }
    });
}
    function showWasteSection(sectionNameWaste,$navObj) {
    if (sectionNameWaste != 'whatToRecycle' && sectionNameWaste != 'whereToRecycle' &&       sectionNameWaste != 'quickTips' && sectionNameWaste != 'seeResults') {
        sectionNameWaste = 'whatToRecycle';
        $navObj = $($('body.fervens-a .pageTabsWaste li')[0]);
    }
        $('body.fervens-a .pageTabsWaste li').removeClass('current');
        $navObj.addClass('current');
        $('.hiddenSection').css('display','none');
        $('#' + sectionNameWaste + 'Content').css('display','block');
        window.location.hash = sectionNameWaste;
    }

尽管我之前把它放在了一起,但我当时并没有在多个页面上使用它,所以现在我试图强行清除网址。这是在Drupal 6站点内,它位于内部网,内部因此我必须支持IE7 +。不能搞乱HTML5存储等。

有没有办法在点击导航列表中的任何链接时擦除网址?我不关心性能问题或迭代,如果以某种方式形成。

2 个答案:

答案 0 :(得分:1)

也许我并不完全理解你想要完成什么,但如果url包含“?”,这将避免在该位置的末尾追加哈希的函数。符号

function showWasteSection(sectionName, $navObj) {
    if (sectionName != 'whatToRecycle' && sectionName != 'whereToRecycle' && sectionName != 'quickTips' && sectionName != 'seeResults') {
        sectionName = 'whatToRecycle';
        $navObj = $($('body.fervens-a .pageTabsWaste li')[0]);
    }
    $('body.fervens-a .pageTabsWaste li').removeClass('current');
    $navObj.addClass('current');
    $('.hiddenSection').css('display', 'none');
    $('#' + sectionName + 'Content').css('display', 'block');
    var location = String(document.location);
    if (location.indexOf("?") < 0)
        window.location.hash = sectionName;
}

答案 1 :(得分:0)

为了完整起见,答案是在if语句中添加所有页面的所有部分名称,检查参数:

function showWasteSection(sectionName, $navObj) {
    if (sectionName != 'whatToRecycle' && sectionName != 'whereToRecycle' && sectionName != 'quickTips' && sectionName != 'seeResults' && sectionName != 'iso14001' && sectionName != 'environmentalPolicy' && sectionName != 'impactAreas' && sectionName != 'goals2013' && sectionName != 'isoDocs') {
        sectionName = 'whatToRecycle';
        $navObj = $($('body.fervens-a .pageTabsWaste li')[0]);
    }
    $('body.fervens-a .pageTabsWaste li').removeClass('current');
    $navObj.addClass('current');
    $('.hiddenSection').css('display', 'none');
    $('#' + sectionName + 'Content').css('display', 'block');
    var location = String(document.location);
    if (location.indexOf("?") < 0)
        window.location.hash = sectionName;
}

将var位置添加到末尾并删除? (由Hanlet提供,上面)清理了网址作为奖励,所以再次感谢你!