zoukankan      html  css  js  c++  java
  • 用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

  • 相关阅读:
    作业
    作业
    [转]C语言指针 之 函数指针
    iOS 隐私政策
    微信小程序成长记录(一)
    ios 用信号量控制多个异步网络请求
    ios 利用cocapods创建私有库
    ios 整理获取设备相关信息
    ios_scrollView顶部图片下拉放大
    ios 在项目中使用文字ttf文件
  • 原文地址:https://www.cnblogs.com/meteortent/p/2342367.html
Copyright © 2011-2022 走看看