从Javascript无法在Awesomium中返回C#函数的值

时间:2014-08-22 22:56:09

标签: c# javascript awesomium

我之前的问题没有得到答复;我在缩小问题方面取得了一些进展,但我的夏季学生工作期只剩下一个星期了,我想在去之前解决这个问题。

我目前想要将一个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文件。

由于

0 个答案:

没有答案