2011-11-30 17 views
7

में location.hash अपडेट नहीं करता मैं जब तक एक विशिष्ट हैश स्थान पाया जाता है एक जे एस स्क्रिप्ट है कि पेज के स्थान बदल जाएगा, वापस जाने के लिए निर्माण करने की कोशिश:history.back() क्रोम/फ़ायर्फ़ॉक्स

var StopAtThisHash ='#'; 
var CurrentHash = window.location.hash; 
var continueLoop = true; 
while ((window.history.length>0) && (continueLoop)) 
{ 
     window.history.back(); 
     var NowWeAreAtHash = window.location.hash; //this never changes in Chrome 
     //actually, always seems to: CurrentHash == NowWeAreAtHash; 
     if(NowWeAreAtHash == StopAtThisHash) 
         continueLoop= false; 
} 

क्रोम और एफएफ में पर्याप्त अजीब, window.location.hash पीछे() के बाद नहीं बदला गया है। न ही इतिहास की लंबाई 1 की कमी आई है। लूप अनिश्चित काल तक चलता है, और ब्राउज़र लटकता है।

आईई 9 में यह इरादा के रूप में चल रहा है।

इस के आसपास कोई कामकाज?

+0

शायद यह http://stackoverflow.com/questions/2305069/can-you-use-hash-navigation-without-affecting- इतिहास देखें क्योंकि आप 'history.replaceState (अपरिभाषित, अपरिभाषित," #hash_value का उपयोग कर सकते हैं ")' हैश मान को प्रतिस्थापित करने के लिए – Hendry

उत्तर

0

लगता है कि window.history.back(), window.history.forward() और window.history.go() इतिहास में परिवर्तन नहीं करता है, बस आगे और आगे बढ़ता है। यदि back() इतिहास की लंबाई बदल देगा तो आप forward() पर सक्षम नहीं होंगे।

वर्कअराउंड के रूप में मैं window.history परके साथ के बजाय पिछले से पहले लूप को सुझाव देना चाहूंगा।

0
function goBackHome() { 
    goBackToHash(''); // Assume the home is without hash. You can use '#'. 
} 
function goBackToHash(hash) { 
    setTimeout(function() { 
     if (window.location.hash == hash) return; 
     history.back(); 
     goBackToHash(hash); 
    }, 0); 
} 

while पाश की समस्या को दूर करने के लिए, मैं उपयोग setTimeout कोशिश की, लेकिन यह आम तौर पर उम्मीद से आगे जाता है ... एक आदर्श समाधान के लिए प्रतीक्षा की जा रही है।

मुझे लगता है कि history.back() और window.location.hash के बीच देरी हो रही है।

एक और कामकाज जेएस में हैश रखना है ताकि आप यह पता लगा सकें कि history.go(N) में कितने कदम की आवश्यकता है।

संबंधित मुद्दे