从 c# 中的 awesomium webcontrol 获取元素

Get Element from awesomium webcontrol in c#

我需要获取 'p' 元素,我使用以下代码

dynamic document = webControl1.ExecuteJavascriptWithResult("document"); var p = document.getElementsByTagName("p");

但是没用 我使用 Awesomium v​​1.7.5.1 和 visual studio 2010

您需要这些段落中的哪些具体数据? 在我下面发布的当前示例中,获取每个段落的 innerHTML。 javascript 可以是:

function GetContents() {
    var arr = [];
    var paragraphs = document.getElementsByTagName('p');
    for (var i = 0; i < paragraphs.length; i++) {
         arr.push(paragraphs[i].innerHTML);
    }
    return arr;
} 
GetContents();

你可以直接执行:

JSObject paragraphs = webControl1.ExecuteJavascriptWithResult("function GetContents() {var arr = [];var paragraphs = document.getElementsByTagName('p');for (var i = 0; i < paragraphs.length; i++) {arr.push(paragraphs[i].innerHTML);}return arr;} GetContents();")

然而,就我而言,似乎我一直在为可变段落获取未定义的内容。我的解决方法是将 GetContents() 放入 alert() 函数中。

变成这样:

JSObject paragraphs = webControl1.ExecuteJavascriptWithResult("function GetContents() {var arr = [];var paragraphs = document.getElementsByTagName('p');for (var i = 0; i < paragraphs.length; i++) {arr.push(paragraphs[i].innerHTML);}return arr;} alert(GetContents());")

您需要等待事件 webControl1.ShowJavascriptDialog 触发。

在视觉 Basic.NET 中,您可以:

Private Sub JSDialog(ByVal sender As Object, ByVal e As JavascriptDialogEventArgs) Handles webControl1.ShowJavascriptDialog
    e.Cancel = False
    e.Handled = True
    MessageBox.Show(e.Message)
End Sub

在 C# 中,您可以通过创建函数来实现:

private void JSDialog(object sender, JavascriptDialogEventArgs e) {
    e.Cancel = false;
    e.Handled = true;
    MessageBox.Show(e.Message);
}

并添加:

webControl1.ShowJavascriptDialog += OnShowJavascriptDialog;