में इतिहास.जेएस हैश फ़ॉलबैक मैं एक ऐसी वेबसाइट को कार्यान्वित कर रहा हूं जो इतिहास.जेएस का उपयोग करके गतिशील रूप से अपने यूआरएल सेट करता है जब नए अनुभाग AJAX के माध्यम से सामने वाले पृष्ठ पर लोड होते हैं।इंटरनेट एक्सप्लोरर और पुशस्टेट समस्या
यह अच्छी तरह से काम करता प्रतीत होता है लेकिन यूआरएल में हैश सेक्शन में समस्या है कि History.js इंटरनेट एक्सप्लोरर में फॉलबैक के रूप में बनाता है।
function connect_browse_buttons(){
$('.browselink').each(function(){
$(this).click(function(){
var action = $(this).attr('name');
action = action.substring(('action_browse').length);
browsetype = action;
if (isIE){
// remove data object and title to avoid use of SUIDs by History.js in IE
History.pushState(null, null, '/public/' + action);
} else {
History.pushState({oldurl: History.getState()['url']}, "Example " + action, config.wwwroot + "public/" + action);
}
return false;
});
});
}
.htaccess फाइल जैसे http://example.com/public/category_ahttp://example.com, जहां जावास्क्रिप्ट यूआरएल को पार्स करता है और ajax के माध्यम से उचित अनुभाग लोड करता है के लिए किसी भी यूआरएल पुनर्निर्देश:
यहाँ पृष्ठ पर लिंक के उदाहरण हैं, का उपयोग कर jQuery बनाया परिवर्तनस्टेट हैंडलर में अनुरोध।
ऐसे
http://example.com/public/category_a
के रूप में और इंटरनेट एक्सप्लोरर में बनाया बराबर वापस आने यूआरएल के लिए यूआरएल के लिए जावास्क्रिप्ट चेक, यानी
http://example.com/#public/category_a
सब ठीक काम करता है कि - तो:
Firefox में, यदि मैं साइट की रूट पर साइट खोलता हूं, http://example.com, और ऊपर दिए गए लिंक पर क्लिक करें, सामग्री लो (ChangeState हैंडलर में) विज्ञापन, और यूआरएल के रूप में History.pushState द्वारा निर्धारित है:
http://example.com/public/category_a
मैं तो एक और लिंक यूआरएल के रूप में सेट किया गया है, उदाहरण के लिए पर क्लिक करते हैं:
http://example.com/public/category_b
आईई में, एक लिंक पर क्लिक करता है, तो मैं साइट के रूट पर साइट खोलें, और, इसके बाद के संस्करण के अनुसार, सामग्री लोड होता है और यूआरएल के रूप में एक हैश के साथ सेट है:
http://example.com/#public/category_a
अगर मैं तो सीएल अगले लिंक पर ick, url सेट के रूप में किया जाता है:
http://example.com/#public/category_b
समस्या पैदा होती है जब मैं IE में एक पेज कि फ़ायरफ़ॉक्स में बुकमार्क था खोलें, और यूआरएल में हैश जरूरत नहीं है। चलो हमारे सामान्य उदाहरण लेते हैं: अगर मैं IE में सीधे इस यूआरएल को खोलने, एक बुकमार्क के माध्यम से या ब्राउज़र पता पट्टी में url को चिपकाकर
http://example.com/public/category_a
, .htaccess सफलतापूर्वक पुनर्निर्देश, यूआरएल js से ठीक पार्स किया गया है फ़ाइल और सामग्री लोड करता है। हालांकि, अब अगर मैं category_b लिंक पर क्लिक करें, यूआरएल History.pushState पर सेट है:
http://example.com/#public/category_b
हालांकि, इतिहास:
http://example.com/public/category_a#./category_b
क्या मैं सच में करना चाहता था के रूप में यूआरएल स्थापित करने के लिए किया गया था। जेएस बाद के पुशस्टेट्स के लिए बेस यूआरएल के रूप में पिछले यूआरएल को पूरा करने लगता है। मैंने History.pushState में पूर्ण यूआरएल सेट करने की कोशिश की है लेकिन सफलता के बिना। जैसा कि आप उपरोक्त कोड ब्लॉक में देख सकते हैं, मेरे पास एक आईई-विशिष्ट पुशस्टेट कथन है। मैंने इसे विभिन्न तरीकों से कॉन्फ़िगर करने का प्रयास किया है।मैं इतिहास pushState की पहचान करा सकते हैं:
http://example.com
यूआरएल, जो हैश अनुभाग के साथ जोड़ दिया जाना चाहिए के आधार भाग के रूप में
? या ऊपर वर्णित तरीके से इस दृष्टिकोण से संपर्क करने का एक बेहतर तरीका है?
नमस्ते, क्या आपको किसी पृष्ठ को रीफ्रेश होने की समस्या के समाधान के लिए कोई समाधान मिल गया, ब्राउज़र वर्तमान के बजाय पहला यूआरएल लोड करता है ?? –
क्या आपने यह quesiton पढ़ा था ?: http://stackoverflow.com/questions/14342912/using-history-pushstate-in-ie9 शायद आप कुछ सहायक टिप्स पा सकते हैं – nikoskip
सार्वजनिक/श्रेणी_ए और "रीडायरेक्ट" पर पुशस्टेट क्यों नहीं करें # जब पुशस्टेट काम करता है हैश को हटाने के लिए? –