C# WebBrowser和javascript

C# WebBrowser和javascript,c#,winforms,webbrowser-control,C#,Winforms,Webbrowser Control,我正在使用一个有javascript的网站,javascript可以对页面加载进行一些更改。但是,当我加载页面并处理DocumentCompleted事件时,这个更改并不存在。如果我继续粘贴DocumentCompleted事件,我可以看到更改发生。但是,我需要在文档完成期间进行此更改,以便检查某些内容 有没有其他我可以订阅的活动,或者有没有办法让webBrowser执行页面上的所有脚本 编辑:这就是我要说的 我加载了一个示例页面,只是为了向您展示,然后单击所有字段为空的submit按钮生成一个

我正在使用一个有javascript的网站,javascript可以对页面加载进行一些更改。但是,当我加载页面并处理DocumentCompleted事件时,这个更改并不存在。如果我继续粘贴DocumentCompleted事件,我可以看到更改发生。但是,我需要在文档完成期间进行此更改,以便检查某些内容

有没有其他我可以订阅的活动,或者有没有办法让webBrowser执行页面上的所有脚本

编辑:这就是我要说的

我加载了一个示例页面,只是为了向您展示,然后单击所有字段为空的submit按钮生成一个错误提示

结果如下:

现在,如果我从WebBrowser控件中获取HTML,并将其呈现在其他地方,这些错误就会消失。当服务器发回这些错误时,也会发生同样的情况。如果我处理DocumentCompleted事件并获取html,它就不存在了。但在事件发生后,它会显示在控件中


希望您理解,这很难解释。

问题似乎是DocumentCompleted事件是在javascript之前触发的。您应该阅读一些关于客户端/服务器端事物如何工作的文章

一个选项是为DocumentCompleted事件创建一个单独的方法,并在完成后将其从javascript中调用。这将使这些事件的顺序正常工作,但不是很理想

或者,您可以在DocumentCompleted事件开始时调用javascript代码。下面的链接很好地解释了如何实现这一点

就我个人而言,我会避免使用javascript,而是在客户端.NET上进行验证,但我对该网站的了解还不够,无法真正说明这一点

编辑:

这应该是您正在寻找的脚本。或者,这里有一个与您的问题相关的线程。对不起,我没有确切的代码,因为我没有一个项目来测试这个

重新编辑:

您在评论中提供的链接上出现的情况是,每个文本框都在调用一些javascript以及submit按钮。检查这一点的最佳方法是使用谷歌浏览器右键菜单中的“Inspect元素”。例如,在文本框上执行此操作将显示它已注册了几个事件:

onfocus="$('f_tip_Username').style.display = 'inline'"

onblur="$('f_tip_Username').style.display = 'none'"

onchange="$('f_err_Username').style.display = 'none'"
ID为“f_tip_Username”的第一个元素将该元素的显示样式设置为内联(可见)

“提交”按钮调用以下命令:

onclick="return o_edit_profile_form.validate()"
在源代码中的“o_edit_profile_form”上查找,您可以找到被调用的确切javascript位置。享受吧

最终编辑(希望?):

按照以下步骤操作:转到您的站点,右键单击并查看源代码。查找“f_提示_用户名”。这是正在使用的一个div标记的ID。它的第三个条目应该是“div tag”,它在第一个文本框下用于警告“min3个字符”

您会注意到上面的代码中有一个名为“Username”的输入类型“text”。请注意它在其中注册的三个事件:

onfocus="$('f_tip_Username').style.display = 'inline'" 
onblur="$('f_tip_Username').style.display = 'none'" 
onchange="$('f_err_Username').style.display = 'none'"

它们隐藏或显示我们找到的div标记(f_tip_username)以及一个单独的div标记(f_err_username),即错误消息div标记。如果您无法在源代码中找到这些,请告诉我。按照我提供的步骤操作,您将在“查看源代码”或DocumentText中找到它。

问题似乎是DocumentCompleted事件在javascript之前被触发。您应该阅读一些关于客户端/服务器端事物如何工作的文章

一个选项是为DocumentCompleted事件创建一个单独的方法,并在完成后将其从javascript中调用。这将使这些事件的顺序正常工作,但不是很理想

或者,您可以在DocumentCompleted事件开始时调用javascript代码。下面的链接很好地解释了如何实现这一点

就我个人而言,我会避免使用javascript,而是在客户端.NET上进行验证,但我对该网站的了解还不够,无法真正说明这一点

编辑:

这应该是您正在寻找的脚本。或者,这里有一个与您的问题相关的线程。对不起,我没有确切的代码,因为我没有一个项目来测试这个

重新编辑:

您在评论中提供的链接上出现的情况是,每个文本框都在调用一些javascript以及submit按钮。检查这一点的最佳方法是使用谷歌浏览器右键菜单中的“Inspect元素”。例如,在文本框上执行此操作将显示它已注册了几个事件:

onfocus="$('f_tip_Username').style.display = 'inline'"

onblur="$('f_tip_Username').style.display = 'none'"

onchange="$('f_err_Username').style.display = 'none'"
ID为“f_tip_Username”的第一个元素将该元素的显示样式设置为内联(可见)

“提交”按钮调用以下命令:

onclick="return o_edit_profile_form.validate()"
在源代码中的“o_edit_profile_form”上查找,您可以找到被调用的确切javascript位置。享受吧

最终编辑(希望?):

按照以下步骤操作:转到您的站点,右键单击并查看源代码。查找“f_提示_用户名”。这是正在使用的一个div标记的ID。它的第三个条目应该是“div tag”,它在第一个文本框下用于警告“min3个字符”

您会注意到上面的代码中有一个名为“Username”的输入类型“text”。请注意它在其中注册的三个事件:

onfocus="$('f_tip_Username').style.display = 'inline'" 
onblur="$('f_tip_Username').style.display = 'none'" 
onchange="$('f_err_Username').style.display = 'none'"

它们隐藏或显示我们找到的div标记(f_tip_username)以及一个单独的div标记(f_err_username),即错误消息div标记。如果您无法在源代码中找到这些,请告诉我。按照我提供的步骤进行操作,您将在“查看源代码”或文档文本中找到它。

看到了吗?我看不到这与我的问题有什么关系?看到了吗?我看不到这与我的问题有什么关系?是的,这正是我想要的