从c#

时间:2016-01-25 17:38:26

标签: javascript awesomium

我需要得到' p'我和元素使用以下代码

  

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

但它不起作用 我在Visual Studio 2010中使用了Awesomium v​​1.7.5.1

1 个答案:

答案 0 :(得分:1)

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

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