我有以下代碼:function setEvents() { // do some code myValidation();}function myValidation() { // do some checks // if checks passed, then set the values to URL parameters window.location.replace(window.location.href + "?myName=" + capture_name);}setEvents();$( "#edit-submitted-name-consolidation" ).click(function() { window.addEventListener("beforeunload", function(e){ (e || window.event).returnValue = setEvents(); }, false);});解釋:我上面的代碼setEvent()調用了myValidation()從內部調用函數的函數。另外,我有一個代碼,beforeunload可以在用戶關閉瀏覽器時運行相同的功能。這僅在單擊某個輸入時發生。但是,我希望myValidation()不要運行此beforeunload.所以換句話說,我希望瀏覽器總是運行beforeunload,但是當myValidation()被調用/使用時,beforeunload應該被刪除。所以為了實現這一點,這就是我嘗試過的:function setEvents() { // do some code myValidation();}function myValidation() { // do some checks // if checks passed, then set the values to URL parameters window.removeEventListener("beforeunload",(e)); window.location.replace(window.location.href + "?myName=" + capture_name);}setEvents();$( "#edit-submitted-name-consolidation" ).click(function() { window.addEventListener("beforeunload", function(e){ (e || window.event).returnValue = setEvents(); }, false);});所以,我添加window.removeEventListener("beforeunload",(e));了myValidation(). 但是,這對我不起作用。所以我可以問,beforeunload如果myValidation()正在使用,我如何刪除?
當某個函數運行時刪除一個 EventListener
MMTTMM
2021-09-30 10:06:21