पहले बंद मुझे लगता है कि pushState फ़ंक्शन में पहला पैरामीटर क्या है? मैं इसे क्या पास करूं? मेरे पृष्ठ के माध्यम से स्क्रॉल करते समय मैं बस यूआरएल बदलना चाहता हूं। मैं व्यूपोर्ट में मौजूदा तत्व की आईडी से पूछताछ कर रहा हूं और इसकी आईडी यूआरएल में भी लिंक होना चाहिए। यह नीचे दिए गए कोड के साथ ठीक काम करता है।एचटीएमएल 5/jQuery: पुशस्टेट और पॉपस्टेट - गहरी लिंकिंग?
1.) अभी पता-में यूआरएल को सफलतापूर्वक बदल जाता है जब मैं अपने पृष्ठ के माध्यम से स्क्रॉल:
var currentHash,
url;
if (history && history.pushState) {
$(window).scroll(function() {
hash = $('.layer:in-viewport').attr('id');
catHash = $("#"+hash).parent('section').attr('id');
var data = "nothing";
if (catHash != undefined)
url = "/" + catHash + "/" + hash;
else
url = "/" + hash;
if (currentHash != hash) {
window.history.pushState(data, hash, url);
}
currentHash = hash;
});
}
अब मैं दो प्रश्न हैं। जब मैं प्रारंभ में पृष्ठ लोड करता हूं तो मैं एड्रेसबार में यूआरएल/हैश से कैसे पूछ सकता हूं। तो कल्पना करें कि अब मेरे पास www.url.com/deep
जैसा लिंक है, मैं जानना चाहता हूं कि क्या/गहरा है? क्या मुझे बस पूरे शीर्ष पर पूछना है। स्थान और इसे प्रत्येक "/" पर विभाजित करना है? मेरा मतलब है कि वे लिंक वास्तव में मौजूद नहीं हैं, तो मैं पुशस्टेट फ़ंक्शन के साथ एक यूआरएल को कॉल करते समय 404 पृष्ठों से कैसे बचूं?
2.) बैक बटन पर क्लिक करते समय पता बार में अंतिम परिवर्तन कैसे प्राप्त कर सकता हूं? तो मैं ब्राउज़र बैक बटन पर क्लिक करते समय /deep
खोजना चाहता हूं ताकि मैं पृष्ठ पर उस स्थिति पर वापस जा सकूं। मुझे लगता है कि यह शायद पॉपस्टेट के साथ काम कर रहा है लेकिन मुझे पता नहीं चला कि कैसे!
आपकी मदद के लिए धन्यवाद!
अद्यतन:
window.history.pushState("test", hash, url);
...
$(window).bind('popstate', function(event){
console.log(event.data);
});
यह alway रिक्त है। क्या यह वापस "परीक्षण" नहीं करना चाहिए?
'' नहीं event.data' – Quentin
हाँ, मैं करने की कोशिश की event.state' है कि, लेकिन कोई 'event.state' जब मैं' सांत्वना .log (घटना); 'केवल डेटा है, हालांकि डेटा हमेशा "शून्य" होता है और यदि मैं' event.state 'को लॉग करने का प्रयास करता हूं तो यह हमेशा शून्य भी होता है! – matt
ठीक है, समाधान मिला ... '$ (विंडो) .bind ('popstate', फ़ंक्शन (ईवेंट) {' काम नहीं करता है लेकिन 'window.onpopstate = function (event) {' करता है! – matt