分享
 
 
 

探究客户端浏览器分辨率的自适应问题(如何使网站脚本自动适应客户端分辨率)(2)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

有人建议直接使用JavaScript方式(感谢jack4811(这么简单还问,楼下的告诉他 ( ̄へ ̄|||) ):

<html>

<head>

<script language=javascript>

<!--

function mHref() {

if (screen.width == 1024) location.href = "htm2.htm";

else if (screen.width == 800) location.href = "htm1.htm";

else return(false);

}

//-->

</script>

</head>

<body onload="mHref();">

</body>

</html>

或者CSS方式(感谢 Miracle(新一代的开山怪)

1、制作一组css文件,分被用于在不同分辨率下的屏幕布局设置

2、根据css文件,设计页面布局

2、在页面加载过程中取得屏幕分辨率(上面已经贴了代码了),然后根据分辨率,重新设定页面元素应该应用的css class。

这个过程中完全不需要服务器代码参与,没有post-back。

另外,要将最佳分辨率下的css模板设置为默认,这样的话可以大大减少重新应用style的可能性。

使用CSS不失为一个办法,就类似asp.net的Theme功能,这样做也会有困难:

如何根据分辨率加载不能的css文件呢?如果一个网站有非常多的页面时,每个文件都需要加入相应的分辨率判定和CSS引导的JavaScript

如果在服务器端采用IHttpHandler或者使用自定义控件,在客户端浏览文件前做出处理,然后由IIS自动处理岂不更好?

以下是我昨晚探索出来的结果,仍需要大力完善,欢迎大家继续探讨。

1、首先按照本贴开头的方法,建立一个GetScreen.aspx取得客户端分辨率并将之赋予Session["ScreenResolution"],同时为了自动转向

在本贴开头所示代码中加入以下关键代码:

string w=Request.Form["WidthPixel"];//得到屏幕分辨率X

string h=Request.Form["HeightPixel"];//得到屏幕分辨率Y

Session["ScreenResolution"]=w+"*"+h;//赋值给Session

//转向(更多相关代码见下)

if(Session["UrlReferrer"]!=null)

{

Response.Redirect(Session["UrlReferrer"].ToString());

}

2、在Global.asax中:

<Script Runat="Server" Language="C#">

public static string strUrl;//用于取得用户刚进入时的页面链接

protected void Application_BeginRequest(Object sender,EventArgs e)

{

strUrl=Request.RawUrl.ToString();

}

protected void Application_EndRequest(Object sender, EventArgs e)

{

}

protected void Application_Start(Object sender, EventArgs e)

{

}

protected void Session_Start(Object sender, EventArgs e)

{

if (Session["ScreenResolution"] == null)

{

Response.Redirect("/GetScreen.aspx"); //如果未取得客户端浏览器分辨率,则定向到GetScreen.aspx,获取之。

}

Session["UrlReferrer"] = strUrl;//将最初请求页面放在Session中,以便在第1条所示代码中重定向

}

protected void Session_End(Object sender, EventArgs e)

{

}

</Script>

3、在需要做分辨率处理的页面中:

<Script language="c#" runat="server">

private string screenWidth;

void Page_Load(Object sender,EventArgs e)

{

if(Session["ScreenResolution"]!=null)

{

screenWidth=Session["ScreenResolution"].ToString().Split('*')[0].ToString();

}

}

</Script>

这里在<Body>区内作示例:

<body bgcolor="#0000FF" background="MyPicture<%=screenWidth%>.gif" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

优点:一次检测,多次使用。

缺点:需要客户端COOKIE的支持,因为使用了Session.

------------------------------------------

备注:

------------------------------------------

在上述示例中可以更简化一下,那就是:

在第1条中:

设置Session["ScreenResolutionX"]和Session["ScreenResolutionY"]:

Session["ScreenResolutionX"]=Request.Form["WidthPixel"];//得到屏幕分辨率X并赋值给Session

Session["ScreenResolutionY"]=Request.Form["HeightPixel"];//得到屏幕分辨率Y并赋值给Session

在第3条中直接在<Body>区内使用:

<body bgcolor="#0000FF" background="MyPicture<%=Session["ScreenResolutionX"].ToString()%>.gif" leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

另外:检测分辨率的代码可以更简化一些:

//GetScreen.aspx(注:未做仔细调试)

<script runat="server" language="C#">

public void Page_Load(Object sender, EventArgs e)

{

if (Request.QueryString["action"] != null)

{

Session["ScreenResolutionX"] = Request.QueryString["resX"].ToString();

Session["ScreenResolutionY"] = Request.QueryString["resY"].ToString();

Session["ScreenResolutionD"] = Request.QueryString["resD"].ToString();

if(Session["UrlReferrer"]!=null)

{

Response.Redirect(Session["UrlReferrer"].ToString());

}

}

}

</script>

<HTML><BODY>

<script language="javascript">

res = "&resX="+screen.width+"&resY="+screen.height+"&resD="+screen.colorDepth;

top.location.href="GetScreen.aspx?action=set"+res;

</script>

</BODY></HTML>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有