CefGlue 有一个现有的解决方案:Call .Net from javascript in CefSharp 1 - wpf
我想要这个,但对于 CefGlue:我想使用 JavaScript 与应用程序通信。因此,当我单击 HTML 站点中的按钮时,我希望应用程序能够处理此问题(例如:启动 tcp 服务器)。
我试图注册一个自己的 CefV8Handler 但没有成功,处理程序上的 Execute 函数永远不会被调用。这是我现在所做的
protected override void OnWebKitInitialized()
{
Console.WriteLine("Registering testy extension");
Xilium.CefGlue.CefRuntime.RegisterExtension("testy", "var testy;if (!testy)testy = {};(function() {testy.hello = function() {};})();", new V8Handler());
base.OnWebKitInitialized();
}
我的 V8Handler 代码如下所示:
public class V8Handler : Xilium.CefGlue.CefV8Handler
{
protected override bool Execute(string name, CefV8Value obj, CefV8Value[] arguments, out CefV8Value returnValue, out string exception)
{
if (name == "testy")
Console.WriteLine("CALLED TESTY");
else
Console.WriteLine("CALLED SOMETHING WEIRED ({0})", name);
returnValue = CefV8Value.CreateNull();
exception = null;
return true;
}
}
我处于多进程模式,没有控制台窗口显示“CALLED TESTY”或“CALLED SOMETHING WEIRED”。