2010-11-27 5 views
7

मैं पृष्ठों के बीच डेटा पास करने के लिए हैश का उपयोग कर रहा हूं (जैसे scrollTop(), आदि सेट करना) और किसी दिए गए पृष्ठ पर परिवर्तन ट्रिगर करने के लिए hashChange ईवेंट का भी उपयोग किया है।क्या क्वेरी स्ट्रिंग के लिए हैशचेंज जैसी कोई घटना है?

हालांकि, हैश के पास डिफ़ॉल्ट व्यवहार हैं जिनके लिए मुझे जरूरी दिलचस्पी नहीं है, जैसे पेज को किसी दिए गए (कभी-कभी महत्वहीन) स्थान पर कूदना।

मैं हो रही/की स्थापना एक क्वेरी स्ट्रिंग अधिक तार्किक होगा की तरह महसूस करते हैं लेकिन:

  1. यह है?

  2. क्या कोई ऐसी घटना है जहां क्वेरी स्ट्रिंग सेट होने पर मैं सुन सकता हूं?

  3. क्या क्वेरी-स्ट्रिंग-संबंधी व्यवहार मुझे पता होना चाहिए?

उत्तर

1
  1. एंकर व्यवहार को पुनर्जीवित करना अजीब है। महत्वहीन टुकड़ों के लिए हैश लिंक का खुलासा करना बेहतर नहीं है (हालांकि आधुनिक ब्राउज़र id के साथ किसी तत्व के लिए कर रहे हैं, <a name="xxx"> के लिए एक समर्पित व्यवहार है)। तो, उत्तर हाँ है, पृष्ठ तर्क क्वेरीस्ट्रिंग के माध्यम से पारित किया जाना चाहिए।
  2. घटना, window.beforeunload है हाँ, पृष्ठ पुनः लोड javascript:void(location.search='some')किया गया है सेट जब
  3. कोई आश्चर्य कर रहे हैं, क्वेरी स्ट्रिंग के साथ काम करने पर, इसके अलावा एक look

है: http://xkr.us/js/querystring

1

यह आपके द्वारा किए जा रहे कार्यों पर निर्भर करता है।

एक क्वेरी स्ट्रिंग परिवर्तन हमेशा एक पेज रीलोड ट्रिगर करेगा। यूआरएल का एकमात्र हिस्सा जिसे आप पृष्ठ रीलोड के बिना बदल सकते हैं वह # -part है।

जावास्क्रिप्ट अनुप्रयोगों में, पृष्ठ लोड आमतौर पर ठीक नहीं होते हैं। लेकिन पारंपरिक एचटीएमएल पेज अनुरोध/प्रतिक्रिया मॉडल होने पर इसका उपयोग करना संभव हो सकता है।

हालांकि कोई घटना AFAIK नहीं है, क्योंकि यह पृष्ठ बदल जाएगी।

1

जैसा कि अन्य उत्तर कहता है, क्वेरी स्ट्रिंग को बदलने से पेज रीलोड हो जाएगा। जहां तक ​​ब्राउज़र का संबंध है, तब आप एक बिल्कुल नए पेज पर होंगे।

ऐसी घटनाएं होती हैं जो आप ऐसा करते समय आग लगेंगे। 'Preunload` घटना आग लग जाएगी, हालांकि यह बहुत उपयोगी नहीं होगा क्योंकि जब उपयोगकर्ता किसी लिंक पर क्लिक करता है या विंडो बंद करता है तो यह भी आग लग जाता है।

प्रभावी रूप से घटना जो आग लगती है यदि आप क्वेरी स्ट्रिंग को बदलते हैं तो यह लोड होने वाले नए पेज पर लोड ईवेंट होगा।