CEFSharp是一個基于Chromium的.NET框架,可以在.NET應用程序中使用Chromium瀏覽器的功能。但是,有時候我們會發現在CEFSharp中無法調用jQuery。下面我們來看看這個問題的解決辦法。
首先,我們需要確認在安裝了CEFSharp之后,是否已經將jQuery文件正確地加載進來。如果沒有加載進來,我們需要手動將jQuery文件添加進來。可以在html文件的head標簽中添加以下代碼:
<script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
如果已經加載了jQuery文件,但仍然無法調用jQuery函數,我們需要注意到一個關鍵問題:Chromium瀏覽器在加載頁面時,是通過接口 ChromiumWebBrowser.LoadingStateChanged 實現的。在LoadingStateChanged為LoadingFrameComplete時,頁面加載完畢。在此時,我們可以通過JSExecutor調用頁面中的JavaScript函數。但是,如果我們在頁面沒加載完時就調用jQuery函數,這個調用就會失敗。
因此,我們需要將調用jQuery函數的代碼寫入到LoadingStateChanged為LoadingFrameComplete時才執行。這個操作可以通過在CEFSharp中使用 JSExecutor 完成。下面是一個實現的例子:
private async void Browser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e) { if (e.IsLoading) return; await Browser.EvaluateScriptAsync("$('body').append('<div>Hello, World!</div>');"); }
這個代碼的作用是,在頁面加載完成后向body中添加一個Hello World的div。其中,EvaluateScriptAsync可以調用頁面中的JavaScript函數。
通過上述操作,我們就可以很輕松地在CEFSharp中調用jQuery函數了。