我正在使用defaultfocus属性在表单或面板中设置默认焦点。我正在尝试为文本框设置默认焦点,它可以在浏览器中正常工作。
但是当在VB6中使用Web浏览器控件加载相同页面时,我遇到了问题。使用Web浏览器控件(VB6 Microsoft Internet控件)加载页面时,不会设置默认焦点。我尝试使用相同的形式,它不起作用。我尝试在页面加载中使用.focus,它也无法在Web浏览器控件中运行。 然后我尝试刷新页面,如下所示
WebBrowser1.Navigate "url here"
WebBrowser1.Refresh
如果我使用刷新,那么焦点将被正确设置。但这将再次加载页面(它再次加载aspx的形式)。那么我可以在我的ASP网站上做任何其他更好的解决方案吗?或任何可以做同样的解决方案?
答案 0 :(得分:3)
我尝试了通过WinForm代码执行此操作的各种方法,但效果不是很好。如果您需要将焦点设置为文本框,那么使用JavaScript可能会有更好的运气。
如果文本框是ASP.net服务器控件,则可以使用:
<html>
<head>
</head>
<body>
<form runat="server">
<asp:TextBox id="FirstBox" runat="server" /><br>
<asp:TextBox id="SecondBox" runat="server" />
<script language="javascript" type="text/javascript">
var field = '<%= SecondBox.ClientID%>';
document.getElementById(field).value = field;
document.getElementById(field).focus();
document.getElementById(field).select();
</script>
</form>
</body>
</html>
答案 1 :(得分:0)
这是一个占位符帖子。
'--- fix WebControl compatibility
lIEMajor = C_Lng(At(Split(pvGetFileVersion(CreateInstance(PROGID_FSO), GetSpecialFolder(ucsOdtSystem) & "\ieframe.dll"), "."), 0))
If lIEMajor > 7 Then
With InitRegistryAccess(ucsRegNone, "Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION")
If .ReadProperty(GetErrorProcessName(), 0, ucsRvtDword) < lIEMajor * 1000 Then
.WriteProperty GetErrorProcessName(), lIEMajor * 1000, 0, ucsRvtDword
End If
End With
End If
上面的代码使用了很多辅助函数/类,但想法很清楚 - 如果是IE7或更高版本,请使用IE大调 - >将major乘以1000并在需要时更新HKCY_CURRENT_USER的密钥
将更新摘要摘录并稍后包含API声明。