這是一個抽象問題,但我一直在思考它的實用性,也許它已經被解決或者啓發某人基於它做些事情。在JS中同步瀏覽器事件
最近我遇到了一個問題,三個瀏覽器事件都是由單個用戶交互引發的:點擊,模糊和焦點。當用戶從一個輸入點擊到另一個輸入時,發生這些事件;並且在用戶從一個標籤到另一個標籤時發生類似的設置。
我遇到的麻煩是他們按照這個順序開火:模糊,焦點,點擊。這意味着,如果模糊事件導致DOM更改,則點擊事件可能會受到影響。我真的很想點擊,模糊,專注 - 但這不是瀏覽器給我的。
我覺得可以生成一個通用工具,捕獲和取消瀏覽器事件,然後同步它們併爲所有三個事件啓動一個處理程序。也許擴展Event類以便事件可以恢復。
是否有更抽象的設計模式,我可以在這裏使用?什麼東西可以讓我設置任意數量的事件偵聽器,然後在所有事件完成時觸發單個事件?它是否已經有一個實現?所有建議歡迎。
是的,你可以實現你的抽象監聽器。但是,請確定當它們沒有被同一動作觸發時應該發生什麼(這可能只能實現爲「一起在短時間內一起開火」)。從關注不同於您感興趣的元素的模糊事件,或者通過不點擊而這樣做。 – Bergi 2014-09-05 13:01:25