脚本src标记中断

时间:2014-08-25 15:41:01

标签: c# javascript html

我之前发布过有关我的自定义可视化功能无法在Spotfire中使用的帖子: https://stackoverflow.com/questions/25390099/awesomium-javascript-handler-being-called-indefinitely Returning value to C# function from Javascript not working in Awesomium

我终于将其缩小到违规行。

在我的文档中,我加载了一个源脚本:

<script src="http://d3js.org/d3.v3.min.js"></script>

这似乎打破了我的整个自定义可视化;它从我所见过的无限尝试重新加载页面。这是我的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");
}

这是我的Javascript代码:

<script src="http://d3js.org/d3.v3.min.js"></script>
<script>
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;
    }
</script>

有趣的是,如果我不尝试调用Javascript函数并在C#中获取返回值,则HTML加载正常。但是,当我尝试返回JS函数的结果并在C#中打印时,包括脚本src行会破坏我的整个代码;它无限地返回一个空白消息,从我设置的MessageBoxes判断。

这让我感到困惑,因为它似乎意味着HTML被反复加载。由于某些奇怪的原因,设置脚本src标记会导致此无限循环。

到底发生了什么?

由于

0 个答案:

没有答案