2008-12-09 14 views
90

मैं एक वेब ऐप विकसित कर रहा हूं। इसमें मेरे पास श्रेणियों नामक एक अनुभाग है जो हर बार जब उपयोगकर्ता किसी श्रेणी में क्लिक करता है तो अद्यतन पैनल उपयुक्त सामग्री लोड करता है।पृष्ठ को रीफ्रेश किए बिना ब्राउज़र के पता बार को बदलने का कोई तरीका है?

के बाद उपयोगकर्ता श्रेणी मैं ब्राउज़र की पता पट्टी यूआरएल पृष्ठ को ताज़ा करने के बिना की तरह

www.mysite.com/products/{selectedCat} 

कुछ करने से

www.mysite.com/products 

बदलना चाहते हैं क्लिक किया।
क्या कोई ऐसा जावास्क्रिप्ट एपीआई है जिसका उपयोग मैं इसे प्राप्त करने के लिए कर सकता हूं?

उत्तर

3

मुझे नहीं लगता कि यह संभव है (कम से कम एक बिल्कुल अलग पते में बदलना), क्योंकि यह पता बार का एक अनजान दुरुपयोग होगा, और फ़िशिंग हमलों को बढ़ावा दे सकता है।

+0

अनजान होने की बजाय, मुझे लगता है कि आपको ऐसा करने में सक्षम नहीं होना चाहिए क्योंकि इसे फ़िशिंग हमलों के लिए दुरुपयोग किया जा सकता है। वैसे भी, वह +1 है। – OregonGhost

+0

हां, यह सिर्फ मेरे लिए हुआ। अच्छा विचार नहीं। धन्यवाद ओरेगॉनहोस्ट। – Galwegian

+1

मैं * करता हूं * इसे संभव लगता है ... विकीमपिया देखें ... जैसे ही आप मानचित्र को खींचते हैं, यूआरएल बदल जाता है ... –

7

मेरा मानना ​​है कि सीधे कि यूआरएल में जाने के बिना एक पूरी तरह से अलग यूआरएल के लिए पता बार से छेड़छाड़, सुरक्षा कारणों से अनुमति नहीं है यदि आप इसे किया जा रहा

www.mysite.com/products/# {से खुश हैं चयनित कैट}

यानी एक ही पृष्ठ के भीतर एक एंकर शैली लिंक, फिर विभिन्न इतिहास/"बैक बटन" स्क्रिप्ट्स को देखें जो अब अधिकांश जावास्क्रिप्ट पुस्तकालयों में मौजूद हैं।

अद्यतन पैनल का उल्लेख मुझे सुराग आप asp.net का उपयोग कर रहे हैं, उस मामले में asp.net ajax इतिहास नियंत्रण

-1

यह शुरू करने के लिए एक अच्छी जगह जिस तरह से आप कह रहे हैं नहीं किया जा सकता है का अनुमान लगाना यह। Somej.net द्वारा सुझाई गई विधि निकटतम है जो आप प्राप्त कर सकते हैं। यह वास्तव में AJAX आयु में बहुत आम प्रथा है। यहां तक ​​कि जीमेल इसका इस्तेमाल करता है।

31

लोगों ने जो कहा है उसे जोड़ने के लिए windows.location.hash प्रॉपर्टी को अपने ऑनक्लिक फ़ंक्शन में इच्छित यूआरएल से मेल खाने के लिए संपादित करें।

window.location.hash = 'category-name'; // address bar would become http://example.com/#category-name 
+0

यूआरएल में '#' प्रतीक के बिना यूआरएल बदलने का कोई तरीका है? –

-1

"window.location.hash"

रूप sanchothefat ने सुझाव दिया एक और इसे करने के लिए एक ही रास्ता होना चाहिए। चूंकि मैंने इस सुविधा को देखा है, यह यूआरएल में # के बाद हर समय है।

152

एचटीएमएल 5 के साथ आप पुन: लोड के बिना यूआरएल को संशोधित कर सकते हैं:

आप ब्राउज़र के इतिहास में एक नया पद बनाना चाहते हैं (अर्थातवापस बटन काम करेंगे)

window.history.pushState('Object', 'Title', '/new-url'); 

तुम सिर्फ वापस जाने के लिए सक्षम किया जा रहा बिना यूआरएल बदलना चाहते हैं

window.history.replaceState('Object', 'Title', '/another-new-url'); 

वस्तु ajax नेविगेशन के लिए इस्तेमाल किया जा सकता:

window.history.pushState({ id: 35 }, 'Viewing item #35', '/item/35'); 

window.onpopstate = function (e) { 
    var id = e.state.id; 
    load_item(id); 
}; 

पढ़ें यहां और अधिक: http://www.w3.org/TR/html5-author/history.html

एक फॉलबैक सॉल्शन: https://github.com/browserstate/history.js

+4

+1 भी ध्यान दें; ये यूआरएल में 'पथ' और/या 'क्वेरी स्ट्रिंग' को बदलते हैं; वे प्रोटोकॉल, डोमेन या पोर्ट को नहीं बदल सकते हैं (क्योंकि यह एक सुरक्षा समस्या होगी जैसा कि अन्य ने इंगित किया है)। उपरोक्त 'हैश' फ़ंक्शन एंकर (या खंड आईडी) –

+2

को बस आपके उदाहरण'/item/35 '} में बदल सकता है, एक अतिरिक्त} जोड़ा गया है – Zhanger

+0

बस एक साइड सवाल के रूप में, इन्हें सक्षम करने का कोई तरीका है फिर यूआरएल को Google में अनुक्रमित किया जाएगा? –

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

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