我正在使用一个网页,其中包含对页面加载进行一些更改的javascript。但是,当我加载页面并处理DocumentCompleted事件时,此更改并不存在。如果我继续粘贴DocumentCompleted事件,我可以看到发生了变化。但是我需要在DocumentCompleted期间发生这种变化,所以我可以检查一些事情。
我可以订阅其他事件,还是让webBrowser在页面上执行所有javscript的方法?
编辑:这就是我所说的。
我加载了一个示例页面只是为了向您显示,然后单击提交按钮,所有字段都为空以生成错误。
结果如下:
http://s8.postimage.org/zfv6stcar/sfsdfsdfds.jpg
现在,如果我从该WebBrowser控件那个精确的时刻获取HTML,并将其渲染到其他地方,那么这些错误就会消失。当服务器发回这些错误时,会发生同样的事情。如果我处理DocumentCompleted事件并采用html,它就不存在了。但事件发生后,它出现在控制中。
希望你理解,很难解释。
答案 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中找到它。