Я пытаюсь внедрить history.pushState на наш сайт, чтобы заменить хеш-челки, но я озадачен тем, почему каждый раз, когда я нажимаю ссылку, вместо добавления значения href на текущий URL, например www.abc.com/123.php/20 он делает это www.abc.com/20, хотя я все еще на странице 123.php (надеюсь, это имеет смысл).history.pushState удаление части url
Следует также указать, что html, приведенный ниже, создается через php.
Я прочитал немало учебников, объясняющих, как реализовать это и прочитать много статей, но все равно не повезло. Также все обучающие программы, которые я нашел, показывают, что это работает с основным меню, но это работает с сетью проектов, которые загружаются в данные с помощью Ajax.
Любая помощь была бы чрезвычайно оценена!
<a id="projectAnchor" class="projectItem powerline" href="30" style="position: absolute; left: 5px; top: 5px;">
\t <div id="imgContainer" name="Western Power Distribution - Brechfa Connection" href="#!30">
\t \t <img id="projectImg" src="projectContent/30/198-th.jpeg" alt="Western Power Distribution - Brechfa Connection">
\t </div>
\t <img id="projectIcon" src="images/solution/powerlineIconB.png" alt="Powerline"> \t \t \t \t
\t \t <p id="projectText">Western Power Distribution - Brechfa Connection</p>
\t \t <div class="blueBar" id="colourBar"> </div>
</a>
var e, p;
$(function(){
p = $(".projectItem").click(function() {
e = $(this);
if(!e.hasClass('active')){
getResults();
history.pushState(null, null, e.attr('href'));
}
return false;
});
});
window.addEventListener("popstate", function(){
e = $('a[href="'+location.pathname.split("/").pop()+'"]');
\t getResults();
});
function getResults(){
p.removeClass('active');
e.addClass('active');
$.get('projectT.php', {id: e.attr('href')}, function(data){
$('#projectContent').html(data);
});
}
У Квентина есть ответ. Кроме того, в качестве грязного исправления вы можете сделать history.pushState (null, null, location.href + "/" + e.attr ('href')); – lshettyl
@LShetty - Это действительно грязно, хотя, если JS не удастся (как это обычно бывает для индексации ботов поисковой системы), ссылка переместится в неправильное место, что приведет к отсутствию значения API истории. – Quentin
@Quentin, правда, и я бы предпочел href = "/ 123.php/xx", что безопаснее! – lshettyl