问题:CefSharp如何判断页面是否加载完毕。

摘要:相信C#用CefSharp做浏览器来发的应该有很多人都会有遇到这个问题。特别是要执行JavaScript的时候,涉及到跨页面的JavaScript操作。大家或多或少都会有遇到这个问题。需要去判断页面是否加载完毕。

环境:CefSharp、WPF、两段JacaScript分别对应在不同页面执行的脚本。

了解CefSharp自带的方法机制

话不多说,先上个图:

从图中可以看出其实CefSharp是自带有一个IsLoading的方法的用来判断这个页面是否加载完毕,所以大家在做的时候其实可以选择采用这个来判断,而不去是采用FrameLoadEnd这个事件,虽然这个事件看似方便,但实际上在加载一个页面的同时他可能会进来判断多次,特别是有一种情况是页面是加载完了,但页面里面的元素实际上是还未显示出来的情况,然后去执行JavaScript脚本的时候,实际上是没有效果的。相信大家也有所察觉,所以才会经常问怎么去判断页面加载完毕。

如何实际去运用它

首先他是一次性的判断,也就意味着我们如果要去判断他是否加载完毕可能得采用循环,不断的去请求他是否加载完毕。因此这个地方一定得用异步,防止线程UI卡死。下面是我的做法

解释下,首先我是写了个异步的拓展方法,我将它设定了个0.5秒的休眠,避免做太多次请求。然后在外面使用的使用只需要await下就OK啦。

综合来说可以是

Task.Run(async()=>

{

  browser.ExecuteScriptAsync("第一段JS");//执行第一个页面需要执行的JS

  await browser.IsLoading();//执行完JS等待第二个页面加载完毕

  browser.ExecuteScriptAsync("第二段JS");//执行第二个页面需要执行的JS

});

最后

希望对大家有所帮助,还有什么问题可以在下方留言。谢谢!┭┮﹏┭┮希望不要再被移除了,这可是干货!!!!!!!

CefSharp如何判断页面是否加载完的更多相关文章

  1. document.readyState等属性,判断页面是否加载完

    如何在页面加载完成后再去做某事?什么方法可以判断当前页面加载已完成?document.readyState 判断页面是否加载完成?javascript提供了document.readyState==& ...

  2. 使用selenium操作ant design前端的页面,感觉页面没加载完

    因需要收集页面数据,遂准备使用selenium爬取瓦斯阅读页面, 瓦斯网站使用的是ant design,元素定位非常困难,页面元素都没有ID,现在还只是能做到操作登录,不能自动打开订阅,查询某公众号, ...

  3. JS判断页面是否加载完成

    用 document.readyState == "complete" 判断页面是否加载完成 传回XML 文件资料的目前状况. 基本语法intState = xmlDocument ...

  4. 在iframe内页面完全加载完后,关闭父页面生成的div遮罩层

    遮罩层div为iframe父页面生成,需在iframe内页面完全加载完后,关闭遮罩层 alertMsgClose() :函数为关闭遮罩层函数 此段代码在iframe页面内: <script> ...

  5. JavaScript——判断页面是否加载完成

    前言 接上文,既然你是做一个loading的效果,你总不能一直loading,当页面完成加载的时候你总要结束吧 步骤 先说下原生的方法,再讲jquery的方法,原理是一样的 JavaScript // ...

  6. 在页面未加载完之前显示loading动画

    在页面未加载完之前显示loading动画 这里有很多比这篇博客还优秀的loading动画源码 我还参考这篇博客 loading动画代码demo 我的demo预览 <!DOCTYPE html&g ...

  7. 页面框架加载完自动执行函数$(function(){});

    页面中有一些大的资源文件,如图片,声音等,如果一个事件绑定写在这些加载资源代码的下方,那么要等资源加载完才会绑定,这样体验不够好. 于是想不等资源加载完,只要框架加载完成就绑定事件,就可以把代码放在以 ...

  8. 用js判断页面是否加载完成

    这可以通过用document.onreadystatechange的方法来监听状态改变, 然后用document.readyState == “complete”判断是否加载完成. 可以采用2个div ...

  9. 页面数据加载完成时,显示loading页面.数据加载完,loading隐藏.

    一,引入三个文件 jQuery版本使用 jQuery v1.7.1 jquery-easyui文件中,引入easyui-lang-zh_CN.js的js 做数据加载时使用jquery.blockui. ...

随机推荐

  1. [转]Maven类包冲突终极三大解决技巧

    举例 A依赖于B及C,而B又依赖于X.Y,而C依赖于X.M,则A除引B及C的依赖包下,还会引入X,Y,M的依赖包(一般情况下了,Maven可通过<scope>等若干种方式控制传递依赖).这 ...

  2. 动态绑定CheckBoxList,并默认勾选多选框

    首先这是界面展示列: 当我点击更新操作后,效果如下: 其中所属区域的复选框为动态绑定,并且已为我们默认勾选了相关选项,具体操作如下: 前台代码: <tr> <td class=&qu ...

  3. 牛逼!Python的判断、循环和各种表达式(长文系列第2篇

    流程控制是python语法很重要的一个分支,主要包括我们经常用到的判断语句.循环语句以及各种表达式,这也是上一篇文章没有介绍表达式的原因,在这篇文章中会更加系统全面的讲解这三方面的基础知识. 很多人学 ...

  4. Python制作AI贪吃蛇,很多很多细节、思路都写下来了!

    前提:本文实现AI贪吃蛇自行对战,加上人机对战,读者可再次基础上自行添加电脑VS电脑和玩家VS玩家(其实把人机对战写完,这2个都没什么了,思路都一样) 实现效果: 很多人学习python,不知道从何学 ...

  5. Unity 入门

  6. PyTorch 学习

    PyTorch torch.autograd模块 深度学习的算法本质上是通过反向传播求导数, PyTorch的autograd模块实现了此功能, 在Tensor上的所有操作, autograd都会为它 ...

  7. ResNeSt:Split attention

    https://www.cnblogs.com/xiximayou/p/12728644.html 下面是SE和SK这两个网络,兄弟俩很相似 下面是具体的每个cardinal(翻译为枢纽)网络,和SK ...

  8. OpenCV之高斯平滑(Python实现)

    假设一个列数为W,行数为H的高斯卷计算子gaussKernel,其中W,H均为奇数,描点位置在((H-1)/2 ,(W-1)/2),构建高斯卷积核的步骤如下 1.计算高斯矩阵 \[gaussMatri ...

  9. 将Asp.Net Core3.1项目,使用Docker 部署到Centos 8

    一.准备工具 Win 10 Centos 8 Visual Studio 2019 Docker Desktop  下载地址:https://download.docker.com/win/stabl ...

  10. C#LeetCode刷题之#443-压缩字符串​​​​​​​(String Compression)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3943 访问. 给定一组字符,使用原地算法将其压缩. 压缩后的长度 ...