これは説明するのが少し変なので、最善を尽くしてください。
私は(最終的に)iOSアプリに形を変えようとしているモバイルサイトに取り組んでいます。このページには、クリックするとメニューを表示/非表示にするメニューボタンがあります。
ほとんどの場合、すべてが機能していますが、問題は、「戻る」ボタンをクリックして、ブラウザが戻る前の場所を使い果たしたときに、メニュー ボタンが壊れることです。クリックしても何も起こりません。何もないかのように振る舞います。
インデックス(または最初のページ)で1つのリンクをクリックして先に進み、ブラウザで戻るボタンを押すと、エラーは次のようになります。
インデックス上で、たとえば 5 つのリンクを任意の順序でヒットした場合 (基本的には 5x 先に進みました)、その後、最大 4x までヒットしても、メニューは引き続き機能します... 基本的に、リンクを先に押し続けて、大丈夫、好きなだけ反撃し、前に進んだ合計回数より1回少ない短い時間で停止しても問題ありません。
戻る回数が最大になり、ページの場所の履歴に戻る場所がなくなるとすぐに、メニューが壊れます。
(私のサーバー上で)取り組んでいるこのダミーサイトのリンクは次のとおりです。
編集**おっと、リンクを忘れました http://somdowprod.net/4testing/mobile/less1.html
ここに私のコードがあります
javascript:(そこにコメントを残したので、私のロジックがどこにあるのかがわかります...おそらく間違っているのでしょうか?)
// JavaScript Document
$(document).ready(function(){
var newHash = "";
var menuBtn = $('.leftButton');
//~~~~~~~~~~~~~~~~~~~~~~~~~~~menu show/hide
menuBtn.click( menuShowHide);
//===========================//
//~~~~~~~~~~~~~~~~~~~~~~~~~~~MENU SHOW / HIDE
function menuShowHide(){
$('#menu').toggleClass();
// if($('#menu').css("display") == "none"){
// $('#menu').css("display","block");
// } else {
// $('#menu').css("display","none");
// }
scroll(0,0);
}
//===========================//
//~~~~~~~~~~~~~~~~~~~~~~~~~~~ACTIONS FOR THE is-loaded trick.
function isLoaded(){
$('#progress').remove();
}
//===========================//
//~~~~~~~~~~~~~~~~~~~~~~~~~~~ACTIONS FOR THE HOME PAGE
if(newHash == ""){
$('body').append('<div id="progress">Loading...</div>');//attach this div which is made to look like a loading bubble.
$('#contentHere').load('index.html #content', isLoaded);//load the content div from the index.html file
}
//===========================//
//~~~~~~~~~~~~~~~~~~~~~~~~~~~Load the clicked content into my container via jQuery AJAX
$('#menu a').click(function(){
menuShowHide();
window.location.hash = $(this).attr('href');
return false; //doesnt let the link jump to a new page
});
$(window).bind('hashchange',function(){
newHash = window.location.hash.substring(1);
$('body').append('<div id="progress">Loading...</div>');//attach this div which is made to look like a loading bubble.
$('#contentHere').load(newHash, isLoaded);
//console.log(newHash);
});
//===========================//
});
メニューが壊れる原因について何か考えがある人はいますか? ありがとうございます。