代码段:在页面上重定向会停止脚本执行。为什么?

Snippets: Redirecting on the page stops the script execution. Why?

提问人:codepleb 提问时间:6/2/2023 更新时间:6/2/2023 访问量:24

问:

如果执行以下脚本,console.logs 将永远不会执行。为什么?我看不出它应该停止在页面切换上运行的原因。

我的用例实际上太简单了,无法证明傀儡师的合理性,但似乎对于这样的事情,您仍然需要它。

const timer = (delay) =>
        new Promise((resolve) => {
          setTimeout(resolve, delay);
        });

window.location.href='https://www.google.com/';

// ###### NEVER GETS HERE!! #######

console.log('wait....')
await timer(5000);
console.log('done')
document.querySelector('div.modal__body button.button.button--responsive.button--primary').click();
谷歌浏览器 google-chrome-devtools

评论

0赞 wOxxOm 6/2/2023
脚本是页面 JS 环境的一部分。页面(及其环境)在导航时被销毁。
0赞 codepleb 6/12/2023
@wOxxOm我知道内联脚本就是这种情况,我只是不知道他们为什么要这样实现它,而他们可以走另一条路。片段可能不止于此。
0赞 wOxxOm 6/13/2023
在页面上下文中运行的任何代码都会在页面导航时终止,它周围没有任何东西。

答: 暂无答案