リンクのクリックで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」という名前のフォルダが存在するため、すべて破損しています... 一度、.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はサポートされていません。つまり、ハッシュを使用する必要があります。9 –