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

});

最后

希望對大家有所幫助,還有什么問題可以在下方留言。謝謝!┭┮﹏┭┮希望不要再被移除了,這可是干貨!!!!!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM