ฉันมีตัวจับเวลาใน JavaScript ของฉันซึ่งจำเป็นต้องเลียนแบบการคลิกลิงก์เพื่อไปยังหน้าอื่นเมื่อเวลาผ่านไป เมื่อต้องการทำสิ่งนี้ฉันใช้click()
ฟังก์ชันของ jQuery ฉันได้ใช้$().trigger()
และwindow.location
ยังและฉันสามารถทำให้มันทำงานตามที่ตั้งใจไว้กับทั้งสาม
ฉันสังเกตเห็นพฤติกรรมแปลก ๆ ด้วยclick()
และฉันพยายามที่จะเข้าใจว่าเกิดอะไรขึ้นและทำไม
ฉันใช้ Firefox สำหรับทุกสิ่งที่ฉันอธิบายในคำถามนี้ แต่ฉันก็สนใจในสิ่งที่เบราว์เซอร์อื่นจะทำกับสิ่งนี้
หากฉันไม่ได้ใช้$('a').bind('click',fn)
หรือ$('a').click(fn)
ตั้งค่าตัวจัดการเหตุการณ์การโทร$('a').click()
ดูเหมือนจะไม่ทำอะไรเลย ไม่เรียกตัวจัดการเริ่มต้นของเบราว์เซอร์สำหรับเหตุการณ์นี้เนื่องจากเบราว์เซอร์ไม่โหลดหน้าใหม่
อย่างไรก็ตามถ้าฉันตั้งค่าตัวจัดการเหตุการณ์ก่อนมันก็ใช้ได้ตามที่คาดไว้แม้ว่าตัวจัดการเหตุการณ์จะไม่ทำอะไรเลย
$('a').click(function(){return true;}).click();
สิ่งนี้จะโหลดหน้าใหม่ราวกับว่าฉันคลิกตัวเอง
ดังนั้นคำถามของฉันคือทวีคูณ: นี่เป็นพฤติกรรมแปลก ๆ เพราะฉันทำอะไรผิดไปหรือเปล่า? และทำไมการโทรถึงไม่click()
ทำอะไรเลยกับพฤติกรรมเริ่มต้นหากฉันไม่ได้สร้างตัวจัดการเอง
แก้ไข:
ตามที่ฮอฟแมนกำหนดเมื่อเขาพยายามทำซ้ำผลลัพธ์ของฉันผลลัพธ์ที่ฉันอธิบายไว้ข้างต้นจะไม่เกิดขึ้นจริง ฉันไม่แน่ใจว่าสิ่งที่ทำให้เกิดเหตุการณ์ที่ฉันสังเกตเห็นเมื่อวานนี้ แต่ฉันมั่นใจในวันนี้ว่ามันไม่ใช่สิ่งที่ฉันอธิบายในคำถาม
ดังนั้นคำตอบคือคุณไม่สามารถคลิก "ปลอม" ในเบราว์เซอร์ได้และ jQuery ทั้งหมดจะเรียกใช้ตัวจัดการเหตุการณ์ของคุณ คุณยังคงสามารถใช้window.location
เพื่อเปลี่ยนหน้าและทำงานได้ดีสำหรับฉัน