링크 클릭시 div에 다른 페이지를로드하는 html 페이지와 같은 쉘을 만들었습니다. 문제는 페이지를 다시로드하지 않고 URL을 다시 작성하는 것입니다. 또한 해시 이벤트를 확인하여 다시 추가하고 다시 작성하십시오.페이지 새로 고치기없이 동적 웹 사이트 페이지로드
먼저 링크;
<a href = "myexample" onclick="menuPage(this);return false;" >
//result www.mywebsite.com/myexample
function loadPage(){
var tempURL = window.location.hash.substring(1);
$(".nav li").removeClass("active");
$("a[data-role="+tempURL+"]").parent().addClass('active');
if(!tempURL){
$('#pages').animate({opacity: '0.0'},function(){
$("a[data-role='Home']").parent().addClass('active');
$.get('Home/index.html', function(response){
$('#pages').html(response);
scrollOnTop();
$('#pages').animate({opacity: '1.0'});
})
});
}else{
$('#pages').animate({opacity: '0.0'},function(){
jQuery.post(tempURL, function(response){
$('#pages').html(response);
ga('send',{ // google
'hitType': 'pageview',
'title': 'mywebsite',
'location':'http://www.mywebsite.com/'+ tempURL,
'page': '/'+ tempURL
});
document.title = $(response).filter('title').text();
scrollOnTop();
$('#pages').animate({opacity: '1.0'});
tempURL = "";
})
});
}
}
$(window).on("hashchange", function() {
loadPage();
});
function menuPage(obj){
menu = "#" + obj.getAttribute("href");
window.location = menu;
return false;
}
function scrollOnTop(){
jQuery("html, body").scrollTop(0);
}
//The above works 100% expected:**
그래서이 해당 페이지에 데려 갈 것이다 www.myexample.com/#item1 내가 링크를 클릭하거나 URL을 입력 말할 수있는 모든 좋은 하지만 내가 www.myexample를 클릭하거나 유형 말할 수 .com/item1 with out hash 이것은 페이지에 걸리 겠지만 인덱스 파일이 들어있는 "item1"폴더가 있기 때문에 모두 망가져 있습니다 ...
기본적으로 나는 URL에 해시를 추가하고 싶습니다. 일단 .htaccess 파일에 다음 내용을 추가하면 : RewriteRule
^([A-Za-z0-9-]+)/?$ # [NC,NE,R=301]
또는 유사합니다.
이것은 엉망입니다.
이 올바른 방향을 가리 킵니다 : https://css-tricks.com/rethinking-dynamic-page-replacing-content/ – macksol
나는 비슷한 것을 우연히했다, 하지만 거기에 단단한 솔루션이 없습니다 – Careen
입니다 history.pushState() 당신이 무엇을 찾고 계십니까? 페이지를 다시로드하지 않고도 실제 URL과 해시 파트를 변경할 수 있습니다. 즉, 9는 지원되지 않습니다. 해쉬는 ie 9에 사용되어야합니다. –