gpt4 book ai didi

javascript - 在c#中从awesomium webcontrol获取元素

转载 作者:行者123 更新时间:2023-11-27 23:25:24 24 4
gpt4 key购买 nike

我需要获取“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 事件触发。

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

关于javascript - 在c#中从awesomium webcontrol获取元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34998749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com