<%@ page language="c#" enableviewstate = "false" debug="true" %>
<!doctype html public "-//w3c//dtd html 4.0 transitional//en" >
<html>
<head>
<title>检测客户端显示器分辨率</title>
<meta http-equiv="content-type" content="text/html; charset=gb2312">
<meta content="检测客户端分辨率" name="description">
<script language="c#" runat="server">
void page_load(object sender, system.eventargs e)
{
// 在此处放置用户代码以初始化页面
system.web.ui.webcontrols.button button1 = new system.web.ui.webcontrols.button();
if(!ispostback)
{
system.web.ui.htmlcontrols.htmlinputhidden btnw = new system.web.ui.htmlcontrols.htmlinputhidden();
system.web.ui.htmlcontrols.htmlinputhidden btnh = new system.web.ui.htmlcontrols.htmlinputhidden();
button1.id = "button1";
btnw.name = "widthpixel";
btnw.id = "widthpixel";
btnh.name = "heightpixel";
btnh.id = "heightpixel";
this.findcontrol("browserpeek").controls.add(btnw);
this.findcontrol("browserpeek").controls.add(btnh);
this.findcontrol("browserpeek").controls.add(button1);
string scriptstring = "";
scriptstring += "document.all.browserpeek.widthpixel.value=window.screen.width;\r\n";
scriptstring += "document.all.browserpeek.heightpixel.value=window.screen.height;\r\n";
this.registeronsubmitstatement("meng", scriptstring);
this.mybody.attributes.add("onload", "document.all."+button1.clientid+".click();");
}
else
{
this.mybody.attributes.remove("onload");
if(this.findcontrol("browserpeek").controls.contains(button1))
{
this.findcontrol("browserpeek").controls.remove(button1);
button1.dispose();
}
system.text.stringbuilder strlabel = new system.text.stringbuilder();
httpbrowsercapabilities bc = request.browser;
strlabel.append("您的浏览器的分辨率为:");
strlabel.append(request.form["widthpixel"]);
strlabel.append("×");
strlabel.append(request.form["heightpixel"]);
label1.text = strlabel.tostring();
}
}
</script>
</head>
<body id="mybody" runat="server">
<form id="browserpeek" runat="server" name="browserpeek">
<asp:label id="label1" runat="server"></asp:label>
</form>
</body>
</html>
其原理是:当客户端打开网页时,自动点击“模拟按钮”,根据客户端浏览器的分辨率反馈给服务器后再由服务器返回。
现在我的目的是想将此脚本放在global.asax的:
protected void session_start(object sender, eventargs e)
{
//就是这里了
}
让每个访问者一旦进入网站,首先检测一个session["screenwidthpixel"]和session["screenheightpixel"]如果有此值,则不再做检测浏览器的步骤而直接进入自动适应的网页。否则进入浏览器的分辨率检测,然后将结果赋值给session["screenwidthpixel"]和session["screenheightpixel"]。
问题来了:
1、如果有网页已经含<form runat="server" id="....">时,上述办法不可行。因为asp.net中只允许一个<form runat="server" ...>,按上述原理进行提交服务器的话,如果网页还有其他提交也必定造成负面影响。
2、还有一个办法,就是采用server.transfer或response.redirect("getscreen.aspx"),但也会造成一定的负页影响,比如:需要返回原来页面的问题。
3、考虑使用ihttphandler?
欢迎大家都来讨论讨论,一定都用得上。因为现在的浏览器类别实在太多了,需要找到一个较好的解决方案。
文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!




