gpt4 book ai didi

javascript - 通过while循环加载javascript时Web浏览器没有响应

转载 作者:行者123 更新时间:2023-12-04 08:41:47 26 4
gpt4 key购买 nike

我有一个问题,当通过 while 循环循环 javascript 时,我的 Web 浏览器没有响应,因此我无法取消此循环或对我的 Web 浏览器执行任何操作。
我正在使用复选框触发 javascript,但在选中复选框后无法取消选中该复选框,因为我的浏览器在循环时没有响应
这是代码:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
while (checkBox1.Checked == true)
{
System.Threading.Thread.Sleep(1000);
CurBrowser.GetMainFrame().ExecuteJavaScriptAsync("var elems = document.getElementsByClassName('VotingButton VotingButton--upvote btn-white'); elems[0].click();");
System.Threading.Thread.Sleep(1000);
CurBrowser.GetMainFrame().ExecuteJavaScriptAsync("var elems1 = document.getElementsByClassName('task-skip-submit js-next-question'); elems1[0].click();");
}
}

最佳答案

我对 cefsharp 不是很熟悉,但是从 C# 方面来看,除非方法是异步的,否则 Thread.Sleep 仍然不会将 UI 循环的控制权交还给前端。也许事实并非如此,但您是否尝试过转动 checkBox1_CheckChangedasync Task ?
如果这不是一个选项,那么我认为您需要将 while 循环踢到后台线程中。您有使用的异步上下文吗?

Task.Run(() => {
while (checkBox1.Checked == true)
{
System.Threading.Thread.Sleep(1000);
CurBrowser.GetMainFrame().ExecuteJavaScriptAsync("var elems = document.getElementsByClassName('VotingButton VotingButton--upvote btn-white'); elems[0].click();");
System.Threading.Thread.Sleep(1000);
CurBrowser.GetMainFrame().ExecuteJavaScriptAsync("var elems1 = document.getElementsByClassName('task-skip-submit js-next-question'); elems1[0].click();");
}
});

关于javascript - 通过while循环加载javascript时Web浏览器没有响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64529254/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com