我有一个独立运行的标签系统。问题是如果有人点击带有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'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 & 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存储等。
有没有办法在点击导航列表中的任何链接时擦除网址?我不关心性能问题或迭代,如果以某种方式形成。
答案 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提供,上面)清理了网址作为奖励,所以再次感谢你!