我的設置非常簡單,在C#(WPF)中我有一個WebView,加載了我的HTML頁面。無法從C#訪問Javascript對象(CefSharp)
現在我想在兩者之間進行雙向溝通。
從Javascript調用C#完全適合我,使用RegisterJsObject
。
現在我嘗試從C#執行Javascript,使用ExecuteScript
。
只要我只用普通的JavaScript,如
ExecuteScript("document.getElementById('test').innerHTML='test'")</code>
它完美的罰款。
但是,當我嘗試訪問我在Javascript中創建的函數時,它無法執行它們。
的Javascript:
function test(param) {
alert(param);
}
C#:
webView.ExecuteScript("test('123')");
您正在使用哪個版本的CefSharp?我認爲最新的stable有一個稍微不同的語法。你確定函數在你調用的時候被加載了嗎?我想你應該能夠從你的C#中用https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions#Example:_Determining_whether_a_function_exists – jornh 2014-10-20 01:59:26
之類的東西進行檢查。這是一個使用[CefSharp 31 -pre1](https://groups.google.com/forum/?nomobile=true#!topic/cefsharp/IbbgXnOiNV8)發佈。當時我能夠複製好的和不好的情況......至少現在你有一些可以比較的東西。 – jornh 2014-10-20 02:30:48
我使用NuGet獲得了最新的CefSharp軟件包。 我從頭開始重新開始我的項目,先構建非常基本的場景,然後才變得複雜,現在我神奇地工作了。 – Johnny 2014-10-20 10:33:45