Web浏览器和JavaScript

时间:2012-03-07 15:52:30

标签: c# winforms webbrowser-control

我正在使用一个网页,其中包含对页面加载进行一些更改的javascript。但是,当我加载页面并处理DocumentCompleted事件时,此更改并不存在。如果我继续粘贴DocumentCompleted事件,我可以看到发生了变化。但是我需要在DocumentCompleted期间发生这种变化,所以我可以检查一些事情。

我可以订阅其他事件,还是让webBrowser在页面上执行所有javscript的方法?

编辑:这就是我所说的。

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

结果如下:

http://s8.postimage.org/zfv6stcar/sfsdfsdfds.jpg

现在,如果我从该WebBrowser控件那个精确的时刻获取HTML,并将其渲染到其他地方,那么这些错误就会消失。当服务器发回这些错误时,会发生同样的事情。如果我处理DocumentCompleted事件并采用html,它就不存在了。但事件发生后,它出现在控制中。

希望你理解,很难解释。

1 个答案:

答案 0 :(得分:1)

问题似乎是在javascript之前触发了DocumentCompleted事件。您应该阅读客户端/服务器端的功能。

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

或者,您可以在DocumentCompleted事件的开头调用javascript代码。下面的链接给出了如何解决这个问题的很好的解释。

http://forums.asp.net/t/1117189.aspx/1

就个人而言,我会避免使用javascript并在客户端.NET上进行验证,但我对网站的了解还不够。

编辑:

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

http://msdn.microsoft.com/en-us/library/system.web.ui.clientscriptmanager.registerstartupscript.aspx

Calling JavaScript Function From CodeBehind

重新编辑:

您在评论中提供的链接上发生的事情是,每个文本框都调用了一些javascript以及提交按钮。检查此问题的最佳方法是使用Google Chrome上的右键菜单中的“检查元素”。例如,在文本框中执行此操作将显示它已注册了一些事件:

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_tip_Username”。这是正在使用的div标签之一的ID。它的第三个条目应该是在第一个文本框下使用的“div标签”,用于警告“最少3个字符”。

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

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中找到它。