使用awesomium从c#调用Javascript

我正在尝试使用awesomium来创建一个基本的应用程序,我正在测试js c#通信,但这似乎不能正常工作……我创建了一个本地html并打开它..这么好..但是当我尝试调用js没有任何事情发生,没有错误,没有错误,没有,只是这不会调用js ..

我的基本js代码是:

var base = { newItem : function(item){ $("#botones").append('
' + item + '
'); }, other : function(){ alert("hi!!"); } }

如果我在firebug中测试这个,显然我可以很好地调用我的function并创建项目或警告框…

now..my c#代码就是这个

 //I've wrote this code inside the winForms sample..but change the code for load //my local file and call js.... WebCore.BaseDirectory = @"C:\Documents and Settings\ME\dummytests\codes\views"; webView.LoadFile("base.html"); JSValue param1 = new JSValue("nameItem"); webView.CallJavascriptFunction("base", "other"); webView.CallJavascriptFunction("base","newItem", param1); webView.Focus(); 

这个文件负载很好,但是js通信不起作用,非常感谢,我希望可以帮助我…这个awesomium真的很棒

问题是你在加载完成之前试图在页面上调用Javascript。 如果等到加载完成后,您应该看到它正确执行。

 webView.LoadCompleted += ExecuteJavascript; WebCore.BaseDirectory = @"C:\Documents and Settings\ME\dummytests\codes\views"; webView.LoadFile("base.html"); 

 private void ExecuteJavascript(object sender, EventArgs eventArgs) { JSValue param1 = new JSValue("nameItem"); webView.CallJavascriptFunction("base", "other"); webView.CallJavascriptFunction("base", "newItem", param1); webView.Focus(); } 

这是Awesomium v​​1.7.0.5的解决方案。 它使用“JSObject”来获取javascript“window”对象。 从那里它调用一个javascript函数,它使用jQuery动态设置“div”的文本。 这也使用jQuery在文档准备好时调用该函数。

可以使用JSObject.Bind方法从javascript调用C#方法。

头:

  

身体:

  

Test...

C#:

这在Button Click事件处理程序中使用名称为“webView”的WPF WebControl。

  using Awesomium.Core; ... private void Button1_Click(object sender, RoutedEventArgs e) { JSObject window = webView.ExecuteJavascriptWithResult("window"); if (window == null) return; using (window) { window.InvokeAsync("setDivText", "You pressed button 1."); } }