问题描述
我正在用谷歌浏览器编写代码片段来聚合一些数据。
由于某种原因我的超时不起作用,这是一个非常简化的版本...
let element= document.querySelector(".element");
let link = element.querySelector("a");
link.click();
setTimeout(() => {
console.log("waited");
},500);
console.log("waiting");
我的输出:
waiting
undefined
Navigated to http://127.0.0.1/page.html
我的预期输出是:
undefined
Navigated to http://127.0.0.1/page.html
waiting
waited
我也很奇怪输出也会被反转。
任何帮助将不胜感激谢谢!
解决方法
在link.click()
之后,真正浏览页面需要很长时间。
由于 Javascript 的异步特性,将执行以下代码行,直到真正的导航发生。所以,
console.log("waiting");
会发生。但是
setTimeout(() => {
console.log("waited");
},500);
不会发生,因为真正的导航会在 500 毫秒之前发生。
在真正的导航之后,您的代码将消失,除非它到位。
document.body.innerHTML = '' +
'<div class="element">'+
' <a href="#"></a>' +
'</div>';
let element= document.querySelector(".element");
let link = element.querySelector("a");
link.click();
setTimeout(() => {
console.log("waited");
},500);
console.log("waiting");
这个片段的日志是:
waiting
undefined
waited