用js判断.net版本

有时我们需要判断一下客户端已经安装的.net版本,比如在制作一个用.net开发的客户端程序的下载页面时,当然,用自带的打包部署程序制作的安装包可以在安装时自动判断,但如果客户端已经安装了.net,在下载时再下载一个包含有.net的安装包显示有些浪费了,这时我们就需要判断一下客户端是否安装了.net。

在网上找了好久,虽然通过请求头信息可以判断,比如

if (context.Request.Browser.ClrVersion == null || context.Request.Browser.ClrVersion.Major < 3)
{
context.Response.Redirect("setup_full.zip", true);
}
else
{
context.Response.Redirect("setup.zip", true);
}

但这个ClrVersion似乎只在ie8以下的ie浏览器中有效,到了ie9中这个判断就不起作用了,这时就只能通过js来判断,并把判断结果传到服务器。例如我们的程序是用.net3.0开发的,这时js的判断就如以下代码所示

          var a = navigator.userAgent;
var b = a.substr(a.indexOf('('), a.lastIndexOf(')') - a.indexOf('(') - 1);
var c;
if (b.length > 0) {
c = b.split(';');
}
var clr = 0;
for (var i = 0; i < c.length; i++) {
if (c[i].indexOf('.NET CLR 3.0') > -1) {
clr = 1;
break;
}
}
document.write('<area shape="rect" coords="722,317,938,396" href="download.ashx?full=' + clr + '"/>');

这样就可以根据判断结果来决定是否给客户下载包含有.net框架程序的安装包了

以上在IE下没问题,但到了firefox下就不行了,因为这些浏览器并没有发送CLR版本信息,所以还要再判断一下这种情况,可以在后台代码里进行:

            if (string.IsNullOrEmpty(context.Request.QueryString["full"]) || context.Request.QueryString["full"] == "0")
{//通过操作系统判断,很可能客户端浏览器没有发送CLR版本信息,比如firefox
string info = context.Request.UserAgent.ToString();
if (info.IndexOf("Windows NT 5") > 0)
{
if (info.IndexOf("NET CLR 3") > 0 || info.IndexOf("NET CLR 4") > 0)
{
context.Response.Redirect("setup.zip", true);
}
else
{
//操作系统可能尚未安装.Netframework
//也有可能用户已经安装.Netframework,但是此时他们正在使用的浏览器没有发送CLR版本信息
context.Response.Redirect("setup_full.zip", true);
}
}
else if (info.IndexOf("Windows NT 6") > 0 || info.IndexOf("Windows NT 7") > 0)
{
context.Response.Redirect("setup.zip", true);
}
else
{
//不支持CLR的可能性很大,很有可能不属于WINDOWS系统,可以视为不支持
context.Response.Redirect("setup_full.zip", true);
}
}
else
{
context.Response.Redirect("setup.zip", true);
}

参考来源:http://www.haogongju.net/art/250463

转载于:https://www.cnblogs.com/meteortent/archive/2012/02/08/2342367.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值