मेरे जावास्क्रिप्ट में एक टाइमर है जिसे समय बीतने के बाद दूसरे पृष्ठ पर जाने के लिए लिंक पर क्लिक करने की आवश्यकता होती है। ऐसा करने के लिए मैं jQuery के click()
फ़ंक्शन का उपयोग कर रहा हूं । मैंने उपयोग किया है $().trigger()
और window.location
यह भी, और मैं इसे तीनों के साथ काम कर सकता हूं।
मैंने कुछ अजीब व्यवहार देखे हैं click()
और मैं यह समझने की कोशिश कर रहा हूं कि क्या होता है और क्यों होता है।
मैं इस प्रश्न में वर्णित सब कुछ के लिए फ़ायरफ़ॉक्स का उपयोग कर रहा हूं, लेकिन मुझे इस बात में भी दिलचस्पी है कि अन्य ब्राउज़र इसके साथ क्या करेंगे।
अगर मैंने इवेंट हैंडलर का उपयोग $('a').bind('click',fn)
या $('a').click(fn)
सेट नहीं किया है , तो कॉलिंग $('a').click()
कुछ भी नहीं कर रही है। यह इस घटना के लिए ब्राउज़र के डिफ़ॉल्ट हैंडलर को कॉल नहीं करता है, क्योंकि ब्राउज़र नए पेज को लोड नहीं करता है।
हालांकि, अगर मैं पहले एक इवेंट हैंडलर सेट करता हूं, तो यह उम्मीद के मुताबिक काम करता है, भले ही इवेंट हैंडलर कुछ भी न करे।
$('a').click(function(){return true;}).click();
यह नया पृष्ठ लोड करता है जैसे कि मैंने स्वयं क्लिक किया था।
तो मेरा सवाल दुगना है: क्या यह अजीब व्यवहार है क्योंकि मैं कहीं गलत कर रहा हूं? और click()
अगर मैं स्वयं का हैंडलर नहीं बना रहा हूं तो डिफ़ॉल्ट व्यवहार के साथ कॉलिंग कुछ भी क्यों नहीं करता है ?
संपादित करें:
जब हॉफमैन ने निर्धारित किया कि जब उन्होंने मेरे परिणामों की नकल करने की कोशिश की, तो मैंने जो परिणाम ऊपर वर्णित किया वह वास्तव में नहीं होता है। मुझे यकीन नहीं है कि कल मैंने जो घटनाएँ देखीं, उनका क्या कारण था, लेकिन मैं आज निश्चित हूँ कि यह वह नहीं था जो मैंने प्रश्न में वर्णित किया था।
तो इसका उत्तर यह है कि आप ब्राउज़र में "नकली" क्लिक नहीं कर सकते हैं और यह सब jQuery करता है जिसे आपके ईवेंट हैंडलर कहते हैं। आप अभी भी window.location
पृष्ठ बदलने के लिए उपयोग कर सकते हैं , और यह मेरे लिए ठीक काम करता है।