calling Javascript from c# using awesomium

泪湿孤枕 提交于 2019-11-30 08:56:57

The problem is that you're trying to call the Javascript on the page before it has finished loading. If you wait until after load has completed, you should see it execute correctly.

webView.LoadCompleted += ExecuteJavascript;

WebCore.BaseDirectory = @"C:\Documents and Settings\ME\dummytests\codes\views";
webView.LoadFile("base.html");

...

private void ExecuteJavascript(object sender, EventArgs eventArgs)
{
    JSValue param1 = new JSValue("nameItem");
    webView.CallJavascriptFunction("base", "other");
    webView.CallJavascriptFunction("base", "newItem", param1);
    webView.Focus();
}

This is a solution for Awesomium v1.7.0.5. It uses "JSObject" to get the javascript "window" object. From there it calls a javascript function that uses jQuery to dynamically set the text of a "div". This also uses jQuery to call the function when the document is ready.

One can use the JSObject.Bind method to call C# methods from javascript.

Head:

<script type="text/javascript">

    function setDivText(s)
    {
        $("#msgDiv").text(s);
    }

    $(document).ready(function () {

        setDivText("This is the start up text.");

    });
</script>

Body:

<body>
<p>Test...</p>
<p></p>

<div id="msgDiv"></div>

</body>

C#:

This uses WPF WebControl with Name of "webView" inside a Button Click event handler.

  using Awesomium.Core;

  ...

  private void Button1_Click(object sender, RoutedEventArgs e)
  {
     JSObject window = webView.ExecuteJavascriptWithResult("window");

     if (window == null)
        return;

     using (window)
     {
        window.InvokeAsync("setDivText", "You pressed button 1.");            
     }
  }
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!