从不在Awesomium中工作的Javascript向C#函数返回值
我先前的问题没有回答;我在缩小这个问题上取得了一些进展,但我的暑期学生作业学期只剩下一周了,我想在我离开之前解决这个问题 我目前想将一个值从Javascript函数返回到Awesomium中的C#中。下面是我在C#应用程序中如何实现它的实现从不在Awesomium中工作的Javascript向C#函数返回值,c#,javascript,awesomium,C#,Javascript,Awesomium,我先前的问题没有回答;我在缩小这个问题上取得了一些进展,但我的暑期学生作业学期只剩下一周了,我想在我离开之前解决这个问题 我目前想将一个值从Javascript函数返回到Awesomium中的C#中。下面是我在C#应用程序中如何实现它的实现 private void WebViewOnDomReady(object sender, EventArgs eventArgs) { webView.DomReady -= WebViewOnDomReady;
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");
}
my.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;
}
函数myMethod(){
write(“在myMethod中,调用.NET但不希望返回值。
”;
jsobject.callNETNoReturn();
}
函数myMethodExpectingReturn(){
document.write(“在myMethodExpectingReturn中,调用.NET并期望返回值。
”);
var returnVal2=jsobject.callNETWithReturn(“foo”);
编写(“从.NET获取的值:+returnVal2+”
);
}
函数MyMethodProvisingReturn(whatToReturn){
var returnVal=whatToReturn+“条”;
编写(“Returning'”+returnVal+“'to.NET.”);
返回值;
}
我已经缩小了范围,使用webview.LoadHTML(myString)将其作为问题加载到Awesomium中的webview中
当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;
}
函数myMethod(){
write(“在myMethod中,调用.NET但不希望返回值。
”;
jsobject.callNETNoReturn();
}
函数myMethodExpectingReturn(){
document.write(“在myMethodExpectingReturn中,调用.NET并期望返回值。
”);
var returnVal2=jsobject.callNETWithReturn(“foo”);
编写(“从.NET获取的值:+returnVal2+”
);
}
函数MyMethodProvisingReturn(whatToReturn){
var returnVal=whatToReturn+“条”;
编写(“Returning'”+returnVal+“'to.NET.”);
返回值;
}
myMethodExpectingReturn和MyMethodProvisingReturn(whatToReturn)返回正确。然而,当我将这些方法放入实际的.HTML文件中时,它似乎一次又一次地调用事件处理程序,冻结了我的程序(通过打印MessageBox验证了这一点)
什么可能导致这种循环行为?除非必要,否则我不会发布整个.HTML文件
谢谢您是否正在放置
webView.LoadHTML(myString)代码>内部WebViewOnDomReady
?如果是这样的话,那么你实际上是在告诉它无限地重新加载页面。我已经把它缩小到一行HTML。这一行似乎打断了整个过程,导致它进入无限循环:d3js.org/d3.v3.min.js“>。为什么会发生这种情况?谢谢