zoukankan      html  css  js  c++  java
  • CefSharp如何判断页面是否加载完

    问题: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

    });

    最后

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

  • 相关阅读:
    当前日期减去TIMESTAMP(6)日期
    java 对象之间的复制
    根据用户编码分组。根据日期倒序排序只取其中一条
    最大权闭合子图
    CodeForces-1082E Increasing Frequency
    CodeForces-1082D Maximum Diameter Graph
    HDU 6446 -- Tree and Permutation
    python学习之函数(二)
    python学习之函数(一)
    python学习之文件操作
  • 原文地址:https://www.cnblogs.com/Huzi-note/p/CefSharp_AwaitPageLoaded.html
Copyright © 2011-2022 走看看