में यूआरएल एंकर परिवर्तन घटना को संभालें मैं जावास्क्रिप्ट कॉलबैक कोड कैसे लिख सकता हूं जो यूआरएल एंकर में किसी भी बदलाव पर निष्पादित किया जाएगा?जेएस
उदाहरण के लिए http://example.com#a से http://example.com#b
में यूआरएल एंकर परिवर्तन घटना को संभालें मैं जावास्क्रिप्ट कॉलबैक कोड कैसे लिख सकता हूं जो यूआरएल एंकर में किसी भी बदलाव पर निष्पादित किया जाएगा?जेएस
उदाहरण के लिए http://example.com#a से http://example.com#b
गूगल कस्टम खोज इंजन किसी पिछले मान के खिलाफ हैश जाँच करने के लिए, जबकि एक अलग डोमेन पर बच्चे iframe अद्यतन करता आइफ्रेम दस्तावेज़ के शरीर के आकार को रोकने के लिए माता पिता के स्थान हैश एक टाइमर का उपयोग करें। जब टाइमर परिवर्तन को पकड़ता है, तो माता-पिता शरीर के मिलान से आईफ्रेम का आकार बदल सकते हैं ताकि स्क्रॉलबार प्रदर्शित न हों।
कुछ निम्नलिखित की तरह एक ही प्राप्त होता है:
var storedHash = window.location.hash;
window.setInterval(function() {
if (window.location.hash != storedHash) {
storedHash = window.location.hash;
hashChanged(storedHash);
}
}, 100); // Google uses 100ms intervals I think, might be lower
गूगल क्रोम 5, सफारी 5, Opera 10.60, Firefox 3.6 और Internet Explorer 8सभीhashchange
घटना का समर्थन:
if ("onhashchange" in window) // does the browser support the hashchange event?
window.onhashchange = function() {
hashChanged(window.location.hash);
}
और उसे एक साथ रखते :
if ("onhashchange" in window) { // event supported?
window.onhashchange = function() {
hashChanged(window.location.hash);
}
}
else { // event not supported:
var storedHash = window.location.hash;
window.setInterval(function() {
if (window.location.hash != storedHash) {
storedHash = window.location.hash;
hashChanged(storedHash);
}
}, 100);
}
jQuery में एक प्लगइन भी है जो हैशचेंज ईवेंट की जांच करेगा और यदि आवश्यक हो तो अपना खुद का प्रदान करेगा - http://benalman.com/projects/jquery-hashchange-plugin/।
संपादित करें: अद्यतन ब्राउज़र समर्थन (दोबारा)।
मैं क्या अन्य अतः सवालों में देख से, केवल व्यावहारिक पार ब्राउज़र समाधान एक टाइमर है। उदाहरण के लिए this question देखें।
आप इस
उत्परिवर्तन घटना मॉड्यूल डिज़ाइन किया गया है एक दस्तावेज़ की संरचना, में कोई परिवर्तन attr और पाठ संशोधन को शामिल करने की अनुमति देने के लिए अधिसूचना से अधिक जानकारी प्राप्त कर सकते हैं।
इस बारे में है के रूप में करता है डोम बदलता है। पूर्णता के लिए – rsman
setInterval()
अब के लिए केवल सार्वभौमिक समाधान है। लेकिन वहाँ hashchange event
एफवाईआई: 'ऑनशैशचेंज' घटना [मोज़िला डेवलपर नेटवर्क पर प्रलेखन] (https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers/onhashchange) –
के रूप में भविष्य में कुछ प्रकाश कर रहे हैं (बस रिकार्ड के लिए।) YUI3 "hashchange" सिंथेटिक घटना कम या ज्यादा एक ही बात को स्वीकार कर लिया जवाब
YUI().use('history-hash', function (Y) {
Y.on('hashchange', function (e) {
// Handle hashchange events on the current window.
}, Y.config.win);
});
, 'var storeHash = window.location.hash;' डालने-एक-साथ सारांश ब्लॉक में जोड़ें। बीटीडब्ल्यू: आजकल मुझे लगता है कि पॉलीफिल कहा जाता है। –
आजकल आप 'विंडो' पर 'हैश चेंज' को सुन सकते हैं http://stackoverflow.com/questions/6390341/how-to-detect-url-change –
@Timo: आपने ... मेरा जवाब नहीं पढ़ा, क्या तुमने किया? :-P –