मुझे URL के खंड पहचानकर्ता में परिवर्तनों की निगरानी करने के लिए जावास्क्रिप्ट हैशचेंज ईवेंट का उपयोग करने में रूचि है। मुझे Really Simple History और इसके लिए jQuery प्लगइन के बारे में पता है। हालांकि, मैं इस निष्कर्ष पर पहुंचा हूं कि मेरी विशेष परियोजना में यह किसी अन्य जेएस फ़ाइल के अतिरिक्त ओवरहेड के लायक नहीं है।किसी दिए गए जावास्क्रिप्ट ईवेंट के लिए समर्थन का पता लगाना?
इसके बजाय मैं "प्रगतिशील वृद्धि" मार्ग लेना चाहता हूं। यही है, मैं यह जांचना चाहता हूं कि हैशचेंज ईवेंट विज़िटर के ब्राउज़र द्वारा समर्थित है या नहीं, और कोर कोड के बजाय एक वृद्धि के रूप में उपलब्ध होने पर इसका उपयोग करने के लिए अपना कोड लिखें। आईई 8, फ़ायरफ़ॉक्स 3.6, और क्रोम 4.1.249 इसका समर्थन करते हैं, और यह मेरी साइट के ट्रैफ़िक का लगभग 20% है।
तो, ओह ... क्या यह जांचने का कोई तरीका है कि कोई ब्राउज़र किसी विशेष ईवेंट का समर्थन करता है या नहीं?
धन्यवाद।
var isEventSupported = (function(){
var TAGNAMES = {
'select':'input','change':'input',
'submit':'form','reset':'form',
'error':'img','load':'img','abort':'img'
}
function isEventSupported(eventName) {
var el = document.createElement(TAGNAMES[eventName] || 'div');
eventName = 'on' + eventName;
var isSupported = (eventName in el);
if (!isSupported) {
el.setAttribute(eventName, 'return;');
isSupported = typeof el[eventName] == 'function';
}
el = null;
return isSupported;
}
return isEventSupported;
})();
उपयोग::
if (isEventSupported('hashchange')) {
//...
}
इस तकनीक है
FYI करें, वाक्यांश आप देख रहे हैं "प्रगतिशील वृद्धि" नहीं है, लेकिन बल्कि "सुंदर गिरावट"। प्रगतिशील वृद्धि तब होती है जब आप अपनी वेबसाइट को सभी उपयोगकर्ताओं के लिए सुलभ बनाते हैं लेकिन उपयोगकर्ताओं के एक और विशिष्ट समूह (जावास्क्रिप्ट-सक्षम, एचटीएमएल 5-समर्थन आदि) में विशेषताओं को जोड़ते हैं। गहन गिरावट तब होती है जब आप कुछ कार्यक्षमता पर निर्भर करते हैं, लेकिन यदि ग्राहक द्वारा समर्थित नहीं है तो बैकअप विधि लें। ऐसा नहीं है की ये मैंने नहीं रखता। :) –
हम्म। मैं तर्क दूंगा कि "खूबसूरत गिरावट" का अर्थ है कि एक वेबसाइट तब भी काम करती रहती है जब कार्यक्षमता सामान्य रूप से निर्भर करती है अनुपलब्ध है। इसके विपरीत, "प्रगतिशील वृद्धि" तब होती है जब कोई साइट अतिरिक्त सुविधाओं को सक्षम करती है, जिस पर निर्भर नहीं होती है, केवल तभी जब उपयोगकर्ता एजेंट उनका समर्थन करता है। मैं इस विशेष कोड को इस तरह से लिखने की योजना बना रहा हूं कि यह हैशचेंज ईवेंट उपलब्ध होने तक location.hash प्रॉपर्टी को तब तक संशोधित नहीं करता है। तो यह एक प्रगतिशील वृद्धि है। और हाँ, यह वास्तव में महत्वपूर्ण नहीं है - वे सिर्फ एक सिक्के के दो पक्ष हैं। – Will