我之前的问题没有得到答复;我在缩小问题方面取得了一些进展,但我的夏季学生工作期只剩下一个星期了,我想在去之前解决这个问题。
我目前想要将一个Javascript函数的值返回到Awesomium中的C#。下面是我在C#应用程序中如何实现它的实现。
private void WebViewOnDomReady(object sender, EventArgs eventArgs)
{
webView.DomReady -= WebViewOnDomReady;
webView.CreateObject("jsobject");
//webView.SetObjectCallback("jsobject", "callNETNoReturn", JSHandler);
webView.SetObjectCallback("jsobject", "callNETWithReturn", JSHandler);
//webView.ExecuteJavascript("myMethod()");
var result = webView.ExecuteJavascriptWithResult("myMethodProvidingReturn('foo')");
MessageBox.Show("Stuff:" + result.ToString());
}
private void JSHandler(object sender, JSCallbackEventArgs args)
{
var result = webView.ExecuteJavascriptWithResult("myMethodProvidingReturn('foo')");
MessageBox.Show(result.ToString());
MessageBox.Show("Got method call with no return request");
}
我的.HTML文件中的Javascript函数如下所示:
function myMethod() {
document.write("In myMethod, calling .NET but expecting no return value.<br/>");
jsobject.callNETNoReturn();
}
function myMethodExpectingReturn() {
document.write("In myMethodExpectingReturn, calling .NET and expecting return value.<br/>");
var returnVal2 = jsobject.callNETWithReturn("foo");
document.write("Got value from .NET: " + returnVal2 + "<br/>");
}
function myMethodProvidingReturn(whatToReturn) {
var returnVal = whatToReturn + "bar";
document.write("Returning '" + returnVal + "' to .NET.");
return returnVal;
}
我已将其缩小到依赖于我在Awesomium中加载到webview中的问题,使用webView.LoadHTML(myString);
当myString设置为仅包含
的文件内容时<script type="text/javascript">
function myMethod() {
document.write("In myMethod, calling .NET but expecting no return value.<br/>");
jsobject.callNETNoReturn();
}
function myMethodExpectingReturn() {
document.write("In myMethodExpectingReturn, calling .NET and expecting return value.<br/>");
var returnVal2 = jsobject.callNETWithReturn("foo");
document.write("Got value from .NET: " + returnVal2 + "<br/>");
}
function myMethodProvidingReturn(whatToReturn) {
var returnVal = whatToReturn + "bar";
document.write("Returning '" + returnVal + "' to .NET.");
return returnVal;
}
myMethodExpectingReturn和myMethodProvidingReturn(whatToReturn)正确返回。但是,当我将这些方法放在我的实际.HTML文件中时,似乎一遍又一遍地调用事件处理程序,冻结我的程序(这是通过打印消息框来验证的)。
什么可能导致这种循环行为?除非必要,否则我不会发布我的整个.HTML文件。
由于