2010-05-31 23 views
13

को पुनः लोड किए बिना यूआरएल क्लाइंटसाइड के साथ जावास्क्रिप्ट के साथ फिर से लिखना संभव है क्या क्लाइंट के ब्राउज़र पर यूआरएल-फ़ील्ड में यूआरएल को फिर से लिखना संभव है?पेज

तो जब कोई व्यक्ति मेरे पृष्ठ पर किसी लिंक पर क्लिक करता है तो कुछ AJAX होता है (उदाहरण के लिए एक टैब दिखाता है) मैं चाहता हूं कि यूआरएल पेज को रीफ्रेश किए बिना कार्रवाई प्रदर्शित करे।

क्या यह संभव है?

उत्तर

14

आप यूआरएल के हैंश/एंकर भाग (# के बाद) को बदल सकते हैं। बाकी यूआरएल पढ़ा गया है।

location.hash = "#value"; 
9

यूआरएल पुनर्लेखन संभव नहीं है, लेकिन यह बहुत एक हैश के साथ कार्रवाई डेटा संलग्न करने के लिए आम बात है। उदाहरण के लिए, फेसबुक इसे बड़े पैमाने पर उपयोग करता है:

http://www.facebook.com/#!/username 
         ^

सब कुछ हैश के बाद एक ही पृष्ठ, आप दिन भर स्क्रिप्ट द्वारा संशोधित कर सकते हैं, जिसमें सिर्फ लंगर डाटा नहीं है।

नए ब्राउज़र भी onhashchanged event प्रदान करते हैं ताकि आप इसे लगातार मतदान के बजाय "यूआरएल" बदलकर प्रतिक्रिया दे सकें।

+0

यह बहुत अच्छा है! मैं इसे भविष्य की परियोजनाओं के लिए याद रखने जा रहा हूं। लेकिन मैं एक अन्य समाधान का सहारा ले रहा हूँ। – richardverbruggen

0

एकमात्र संभावित समाधान एक एंकर को जोड़ना है। फिर आप reallysimplehistory जैसे कुछ का उपयोग कर सकते हैं ताकि उपयोगकर्ता किसी पृष्ठ को बुकमार्क कर सके या आपके भीतर बैक बटन का उपयोग कर सकें।

मैंने इसे अतीत में एक टैबड पेज के साथ भी किया है।

24

जब सभी ने इस प्रश्न का उत्तर दिया, तो वे सही थे, जावास्क्रिप्ट में यूआरएल को बदलना संभव नहीं था। एचटीएमएल 5 और आधुनिक ब्राउज़रों के साथ, अब यह HTML5 History API

diveintohtml5.info article का उपयोग कर रहा है। Here सुविधा को समझाते हुए एक और अच्छा ब्लॉग पोस्ट है।

ब्राउज़र संगतता के लिए caniuse.com देखें।

History.js जैसे पुस्तकालय हैं जो पुराने ब्राउज़र के लिए हैशबैंग का उपयोग करके API और pollyfill को लपेटते हैं।