2009-07-31 16 views
6

में इतिहास आइटम बनाता है इस बिंदु पर हमारे पास एक फोटोगैलरी है जो यह निर्धारित करने के लिए हैशहर का उपयोग करती है कि वर्तमान में उपयोगकर्ता को कौन सी तस्वीर दिखाई देती है, और पृष्ठ को किसी मित्र को भेजने का समर्थन करने के लिए। कुछ की तरह:top.location.replace सफारी/क्रोम

http://url/photos/#photo-4

जब हम अगले या पिछले बटन क्लिक करने के बाद इसी चित्र लोड किया है, हम का उपयोग कर जे एस 1.1 विनिर्देश के अनुसार यूआरएल बदलने के लिए:

top.location.replace(url.url + hash); 

हमारी चाहता था व्यवहार है कि कोई इतिहास वस्तु नहीं बनाई जा रही है, इसलिए उपयोगकर्ता पिछली तस्वीरों को देखने के लिए बैक बटन का उपयोग करने के बजाय, फोटोगैलरी छोड़ने के लिए बैक बटन का उपयोग कर सकते हैं।

आईई और फ़ायरफ़ॉक्स में विधि एक आकर्षण की तरह काम करती है, लेकिन सफारी और क्रोम बदले गए यूआरएल के लिए इतिहास वस्तु बनाते हैं। मुझे इस तरह नेविगेट करने के लिए हैश का उपयोग करते समय इतिहास आइटम बनाने के नमूने मिलते हैं, लेकिन मैं इसे अन्य तरीके से करना चाहता हूं। कोई सुराग?

उत्तर

3

यह काम करता है के रूप में अब उम्मीद:

पर सफारी [5.1.7] location.replace() काम करता है के रूप में उम्मीद - यूआरएल बदल दिया जाता है, कुछ भी नहीं वापस बटन की पंक्ति में जोड़ रहा है, और कुछ भी नहीं जोड़ा गया है इतिहास मेनू में।

पर क्रोम [21.0.1180.82] location.replace() एक छोटे से मुश्किल है - यूआरएल बदल दिया जाता है और कुछ भी नहीं वापस बटन की पंक्ति में जोड़ है, लेकिन यह इतिहास मेनू में कोई आइटम जोड़ने करता है।


यह मुश्किल क्या है कि दो अलग-अलग इतिहास कतार - इतिहास मेनू और बैक/फॉरवर्ड बटन हैं। अपनी कतार देखने और इतिहास मेनू से तुलना करने के लिए बैक और फॉरवर्ड बटन पर क्लिक करके रखें।

और बैक/फॉरवर्ड बटन का इतिहास कतार सक्रिय टैब से जुड़ा हुआ है। साथ ही, जब आप इतिहास मेनू साफ़ करते हैं तो बटन इतिहास तब भी बना रहता है - कम से कम जब तक आप टैब बंद नहीं करते।

0

क्या आपने पूरे यूआरएल को बदलने के बजाय window.location.hash = newHash का उपयोग करके अपने हैश को असाइन करने पर देखा है?

https://developer.mozilla.org/en/DOM/window.location

+0

हाँ "प्रतिस्थापित करें (यूआरएल) \t वर्तमान दस्तावेज़ को प्रदत्त यूआरएल पर एक के साथ बदलें। असाइनमेंट() विधि से अंतर यह है कि प्रतिस्थापन() का उपयोग करने के बाद वर्तमान पृष्ठ सत्र इतिहास में सहेजा नहीं जाएगा, जिसका अर्थ है उपयोगकर्ता नेविगेट करने के लिए बैक बटन का उपयोग करने में सक्षम नहीं होगा। " और वहां मुझे अपनी बग मिली, क्योंकि यह वेबकिट में काम नहीं करता है। –

+0

मैं अपने उत्तर को स्पष्ट कर दूंगा – MyItchyChin

+1

location.hash आईई के अलावा सभी प्रमुख ब्राउज़र में इतिहास आइटम बनाता है, इसलिए यह काम नहीं करेगा :-) –

3

वहाँ इस बिंदु पर कोई समाधान नहीं हो रहा है।

+0

सिर्फ रिकॉर्ड के लिए, यह अभी भी 2 साल बाद एक परेशान मुद्दा है ... वेबकिट बगफिक्स थोड़ा धीमा है। – DarthJDG