Awesomium 1.7.5 webView.ExecuteJavascript无效

时间:2015-03-16 07:33:00

标签: .net awesomium off-screen

我使用了屏幕外浏览器。然后,我创建了webView,订阅了DocumentReady并加载了html。

_originalWebView = WebCore.CreateWebView(this.ViewWidth, this.ViewHeight, WebViewType.Offscreen);
_originalWebView.DocumentReady += browser_DocumentReady;
_originalWebView.LoadHTML(html);

DocumentReady的方法:

private void browser_DocumentReady(object sender, DocumentReadyEventArgs e)
{
    var webView = sender as WebView;
    if (webView == null)
        return;

    if (e.ReadyState == DocumentReadyState.Ready)
        return;

    var global = e.Environment;

    if (!global)
        return;

    webView.ExecuteJavascript(@"
    document.getElementById('id').innerHTML = 'Hello World' ;
");
    Thread.Sleep(2000);
    if (webView.GetLastError() != Error.None)
        System.Diagnostics.Debug.Print("There was an error calling this synchronous method");

    Html = _originalWebView.HTML;
    webView.Dispose();
}

我的HTML:

<html>
      <head>
        <title>Example</title>
        <meta http-equiv='Content-Type' content='text/html;charset=UTF-8'>
      </head>
      <body>
        <div id='id'>old value</div>
      </body>
</html>

这个javascript没有用。我做错了什么? 只有当js在html中时我才能执行js。我使用了Awesomium 1.7.5。
请帮帮我:(

2 个答案:

答案 0 :(得分:0)

当我更换

时,这个问题就解决了
Html = _originalWebView.HTML; 

on

Html = webView.ExecuteJavascriptWithResult("document.getElementsByTagName('html')[0].innerHTML");

答案 1 :(得分:0)

private void WebViewOnDocumentReady(object sender, DocumentReadyEventArgs e)
{
    var webView = sender as WebControl;
    webView.ExecuteJavascript(@"document.getElementById('id').innerHTML = 'Hello World';");
}