2010-08-17 18 views
11

पर डिफ़ॉल्ट हैश व्यवहार को रोकें मेरे पास एक टैबड इंटरफ़ेस वाला एक पृष्ठ है। प्रत्येक टैब में एक अद्वितीय आईडी है। मैंने हैश के बाद संलग्न आईडी के साथ उस पृष्ठ को इंगित करने वाले लिंक सक्षम किए हैं, और अब मैं डिफ़ॉल्ट ब्राउज़र व्यवहार को रोकने की कोशिश कर रहा हूं जो पृष्ठ पर तत्व के स्थान पर हैश के साथ एक यूआरएल खोलता है।पृष्ठ लोड

तो:

  • pageA लिंक इस तरह पृष्ठ B पर: <a href="pageB.php#Tab4">Go</a>
  • pageB खोलता है, और मेरी jQuery सही टैब को सक्रिय करता है, लेकिन ब्राउज़र जहां <div id="Tab4"> पेज पर स्थित है के लिए नीचे स्क्रॉल किया गया है।

यही वही है जो मैं रोकना चाहता हूं।

कोई भी विचार? धन्यवाद!

उत्तर

43

डिफ़ॉल्ट हैश व्यवहार को रोकने का कोई तरीका नहीं है, लेकिन आप अपनी हैश योजना को बदल सकते हैं ताकि #tag आपके पृष्ठ पर किसी भी आईडी से मेल न हो। पेज लोड पर, हैश वैल्यू लें और स्थिर रखें (उदा: _hash), फिर jQuery का उपयोग करके उस पर स्क्रॉल करें।

उदाहरण: http://mysite/page.php#tab4

page.php है <div id="tab4_hash"></div>

पृष्ठ लोड पर, कर tab4 + _hash

+1

सही विचार है, मैं के लिए उपयोगी था कि। धन्यवाद! – bobsoap

+0

हैकिश लेकिन मैं क्या देख रहा था! और यह बेवकूफ है कि मैंने कुछ स्पष्ट नहीं सोचा था। धन्यवाद! –

+1

एचटीएमएल 5 के साथ आप तत्व/div का चयन करने के लिए डेटा-लक्ष्य या डेटा-हैश जैसे कुछ भी उपयोग कर सकते हैं। – nabrown78

1

के बाद आप सही टैब लोड हो रहा है काम हो गया, इस चलाने के द्वारा div मिलती है:

window.location = '#'; 
+0

ने कोशिश नहीं की है लेकिन ... क्या वह नीचे स्क्रॉल नहीं करेगा और फिर फिर से? – nico

+0

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

3

मैं इसका उपयोग करूंगा:

window.scrollTo(0,0); 

इस तरह आपको तत्व आईडी या कुछ और बदलने की आवश्यकता नहीं है।

मैं उस समस्या से आया जहां मैं टैब पर स्क्रॉल करना चाहता था, लेकिन किसी कारण से इसे पृष्ठ के नीचे तक स्क्रॉल किया गया था (नहीं, डुप्लिकेट आईडी नहीं थी)। मुझे लगता है कि ऐसा इसलिए है क्योंकि सामग्री लोड होने से पहले ब्राउज़र को आईडी पर स्क्रॉल करेगा, और अतिरिक्त सामग्री ने नई स्क्रॉल स्थिति के ऊपर तत्व को धक्का दिया था)। मैं इस के साथ यह तय हो:

if(document.location.hash) 
{ 
    window.location = document.location.hash; 
} 

"अगर" यहाँ बयान अनिवार्य है या आप एक अनंत लूप

0
  1. आप आईडी के साथ तत्व सिर्फ छुपाना चाहिए = हैश डिफ़ॉल्ट रूप से मिल सकता है
  2. और फिर, पृष्ठ लोड होने के बाद, आप तत्व को दृश्यमान बनाते हैं।

आप और अधिक जानकारी यहाँ पा सकते हैं: How to disable anchor "jump" when loading a page?

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