从 c# 中的 awesomium webcontrol 中获取元素

Get Element from awesomium webcontrol in c#

本文关键字:获取 元素 webcontrol awesomium 中的      更新时间:2023-09-26

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

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

但它不起作用我将Awesomium v1.7.5.1与Visual Studio 2010一起使用

您需要从这些段落中获取哪些具体数据?在我下面发布的当前示例中,获取每个段落的内部 HTML。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触发。

在 Visual 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;