2013-09-06 7 views
5

आईआरएल को यूआरएल को यूआरएल को धक्का देने के लिए उपयोग करता है लेकिन आईई में यह पृष्ठ का नाम जोड़ता है।एचटीएमएल 4 ब्राउज़र (आईई) में History.js पुशस्टेट यूआरएल को गलत तरीके से बदलता है

यदि अपने मूल यूआरएल है: http://www.mydomain.com/Home.aspx

और उसके बाद मैं निम्नलिखित निष्पादित करें:

वर url = window.location.protocol + '//' + window.location.host + '/ होम .aspx? id = 2 & pl = 4 '; History.pushState (शून्य, अशक्त, यूआरएल)

क्रोम में मेरा url हो जाता है: http://www.mydomain.com/Home.aspx?id=2&pl=4

आईई 8 में मेरी यूआरएल हो जाता है: http://www.mydomain.com/Home.aspx#Home.aspx?id=2&pl=4

अगर मैं chrom में आईई 8 url पेस्ट मेरी कोड में विफल रहता है ...

सबसे पहले, सही एचटीएमएल 4 यूआरएल कैसा दिखता है और दूसरी बात, मैं इसे कैसे ठीक कर सकता हूं?

+0

आपकी समस्या यह है कि # के बाद सबकुछ सर्वर पर नहीं भेजा जाता है। तो mydomain.com/Home.aspx कभी भी आईडी और पीएल नहीं मिलेगा जो हैश के बाद हैं। – patrick

+0

आपको जो मिलता है उसका इरादा है, मैं अपनी ग्राहक साइट में उपयोग कर रहा हूं और यह वैसे ही व्यवहार करता है जैसा आपने दिया है और यह अच्छा काम करता है। हैश के साथ यूआरएल क्रोम ब्राउज़र में भी सही तरीके से काम करेगा। –

उत्तर

0

मेरा मानना ​​है कि आप एक राज्य को सही तरीके से नहीं दबा रहे हैं, यूआरएल को दोबारा सुधारने का प्रयास करें। History.pushState({data: 'home'}, null, '/Home/').

या शायद आपने सोचा था कि एक राज्य को धक्का देने से सर्वर पर एक अनुरोध भी भेजा जाता है जैसे आपने एक प्रश्न के साथ किया था? यह दोस्त नहीं है।

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

उदा।

History.Adapter.bind(window, 'statechange', 
     function() { 
     if (History.getState().data.page === 'home') { 
      //do what u would like with current state 
     } 
    ); 
+0

राज्य परिवर्तन घटना मुद्दा नहीं है। वह सब काम करता है। अगर मैं '/ home /' दबाता हूं और फिर उस पृष्ठ को बुकमार्क करता हूं और फिर पेज को फिर से लोड करता हूं तो यह काम नहीं करेगा क्योंकि एएसपीनेट घर के अंत में '.aspx' की अपेक्षा कर रहा है ... मैं इसे शेयरपॉइंट साइट पर चला रहा हूं। –

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