| "use strict"; |
| |
| // Usage examples: |
| // navigateAndWaitForChange(frameWindow, w => w.location.href = "..."); |
| // navigateAndWaitForChange(frameWindow, w => w.history.back()); |
| // navigateAndWaitForChange(frameWindow, w => w.history.back(), { assumeSuccessAfter: 100 }); |
| |
| window.navigateAndWaitForChange = (w, navigationAction, { assumeSuccessAfter } = {}) => { |
| return new Promise(resolve => { |
| w.addEventListener("hashchange", listener); |
| |
| function listener() { |
| w.removeEventListener("hashchange", listener); |
| resolve(); |
| } |
| |
| if (assumeSuccessAfter !== undefined) { |
| step_timeout(resolve, assumeSuccessAfter); |
| } |
| |
| navigationAction(w); |
| }); |
| }; |