navigate-helpers.js (682B)
1 "use strict"; 2 3 // Usage examples: 4 // navigateAndWaitForChange(frameWindow, w => w.location.href = "..."); 5 // navigateAndWaitForChange(frameWindow, w => w.history.back()); 6 // navigateAndWaitForChange(frameWindow, w => w.history.back(), { assumeSuccessAfter: 100 }); 7 8 window.navigateAndWaitForChange = (w, navigationAction, { assumeSuccessAfter } = {}) => { 9 return new Promise(resolve => { 10 w.addEventListener("hashchange", listener); 11 12 function listener() { 13 w.removeEventListener("hashchange", listener); 14 resolve(); 15 } 16 17 if (assumeSuccessAfter !== undefined) { 18 step_timeout(resolve, assumeSuccessAfter); 19 } 20 21 navigationAction(w); 22 }); 23 };