Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从不在Awesomium中工作的Javascript向C#函数返回值_C#_Javascript_Awesomium - Fatal编程技术网

从不在Awesomium中工作的Javascript向C#函数返回值

从不在Awesomium中工作的Javascript向C#函数返回值,c#,javascript,awesomium,C#,Javascript,Awesomium,我先前的问题没有回答;我在缩小这个问题上取得了一些进展,但我的暑期学生作业学期只剩下一周了,我想在我离开之前解决这个问题 我目前想将一个值从Javascript函数返回到Awesomium中的C#中。下面是我在C#应用程序中如何实现它的实现 private void WebViewOnDomReady(object sender, EventArgs eventArgs) { webView.DomReady -= WebViewOnDomReady;

我先前的问题没有回答;我在缩小这个问题上取得了一些进展,但我的暑期学生作业学期只剩下一周了,我想在我离开之前解决这个问题

我目前想将一个值从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");
    }
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“>。为什么会发生这种情况?谢谢