WebControl webControl = new WebControl();
webControl.CreateObject("external");
SetObjectCallback("external", "JSCallback", OnJSCallback);
private int count = 0;
private void OnJSCallback(object sender, JSCallbackEventArgs e)
{
Console.WriteLine("hi");
MessageBox.Show("hi");
if (count == 0)
{
Thread worker = new Thread(func =>
{
Thread.Sleep(3000);
OnReturn();
});
worker.Start();
}
if (count == 1)
{
Thread worker = new Thread(func =>
{
Thread.Sleep(5000);
OnReturn();
});
worker.Start();
}
count++;
}
private void OnReturn()
{
webControl.Dispatcher.BeginInvoke((ThreadStart) delegate()
{
webControl.CallJavascriptFunction("", "CallFromNative", new JSValue[] {new JSValue("hello")});
});
}
和javascript代码是这样的:
external.JSCallback("hello ", "world");
external.JSCallback("wtf ", "dude");
奇怪的问题是来自Javascript的第二次调用似乎是直接的 从未执行过 我的代码出了什么问题?和顺便说一句,AwesomiumSharp的版本是V1.6.6
答案 0 :(得分:0)
对我来说似乎很好。
我这样做是这样的:
webView.Callback += new EventHandler<CallbackEventArgs>(webView_Callback);
webView.CreateObject("client");
webView.SetObjectCallback("client", "message");
void webView_Callback(object sender, CallbackEventArgs e)
{
if (e.CallbackName == "message")
System.Windows.Forms.MessageBox.Show(e.Args[0].ToString());
}
你应该做得很好。你确定你第二次执行功能吗?警报( “布拉布拉”); message.client(“test”,“test2”),看看如果稍等一会然后再做就会发生什么。
到目前为止,我已经使用了Awesomium回调系统,它运行良好