博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
用js判断.net版本
阅读量:4652 次
发布时间:2019-06-09

本文共 2285 字,大约阅读时间需要 7 分钟。

有时我们需要判断一下客户端已经安装的.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('');

这样就可以根据判断结果来决定是否给客户下载包含有.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); }

参考来源:

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

你可能感兴趣的文章
Convert the AScii to SAC file
查看>>
PAT (Basic Level) Practise 1002. 写出这个数
查看>>
SxsTrace
查看>>
How to correctly use preventDefault(), stopPropagation(), or return false; on events
查看>>
How to: Update an .edmx File when the Database Changes
查看>>
纯CSS3绘制的猫咪老师——献给喜欢CSS3及《夏目友人帐》的你
查看>>
Mysql卸载
查看>>
Android事件分发机制
查看>>
linux之sleep
查看>>
JQuery绑定和注销事件
查看>>
搜索引擎易用性
查看>>
git的使用
查看>>
android手机截屏
查看>>
JAVA设计模式之观察者模式
查看>>
MySQL的循环语句使用总结
查看>>
align-conten和align-items之间的区别
查看>>
Java
查看>>
防止SQL注入的登录页面
查看>>
生成和解析txt文件
查看>>
stm32F429启动时钟配置
查看>>