http://zentili.koding.comに、インデックスページのメインの#content div内にリンクされたメニュー項目のコンテンツをロードし、ロードされたページの名前から'を引いた名前のハッシュを適用するこのJavaScriptがあります。 .php'、それ以外の場合は、URLに入力されている場合はハッシュ+'.php'をロードします。非常にうまく機能します。一方、ENG / ITAエントリは、URL内のハッシュの直前に?locale = lang_LANGを追加するため、ローカリゼーションも正常に機能します。よく見ると、ENGとITAを切り替えると、ハッシュに移動する前にインデックスコンテンツが一瞬だけ表示されることに気付くかもしれません。これは、ページが最初に読み込まれ、次にハッシュに移動されるためですが、ホームページを非表示にして、読み込まれるときにハッシュの場所に直接移動する方法があるかどうか疑問に思いました。
ここに私のメニューのコードがあります:
<script type="text/javascript">
$(document).ready(function() {
var hash = window.location.hash.substr(1);
var href = $('#menubar a.item').each(function(){
var href = $(this).attr('href');
if(hash==href.substr(0,href.length-4)){
var toLoad = hash+'.php';
$('#content').load(toLoad);
$("#menubar a.item").removeClass("current");
$(this).addClass("current");
}
});
$('#menubar a.item').click(function(){
window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-4);
var toLoad = $(this).attr('href');
$('#content').fadeOut('fast',loadContent);
function loadContent() {
$('#content').load(toLoad,'',showNewContent) }
function showNewContent() {
$('#content').fadeIn('fast'); }
$("#menubar a.item").removeClass("current");
$(this).addClass("current");
return false;
});
});
function goENG(){
var hash = window.location.hash;
var eng = '?locale=en_EN';
window.location.replace(eng+hash) ;
};
function goITA(){
var hash = window.location.hash;
var ita = '?locale=it_IT';
window.location.replace(ita+hash) ;
};
</script>
関数goENG()およびgoITA()は、ENGおよびITAaのonclickを介して呼び出されます。私はこれに対するいくつかの解決策を見つけたいと思っています。