主题:  如何检测浏览者的操作系统,根据系统使用不同的CSS链接文件!

helmet

职务:版主
等级:4
金币:10.0
发贴:1559
注册:2004/1/30 15:59:27
#12001/10/23 5:07:30
1,由于navigator.appVersion属性的值一般都这样表示:
4.0 (compatible; MSIE 6.0; Windows NT 5.1) XP
4.0 (compatible; MSIE 4.01; Windows 95) 95
4.0 (compatible; MSIE 5.0; Windows 98) 98
4.0 (compatible; MSIE 5.0; Windows NT ) NT

所以,我们只假设有3种情况:
即用户的操作系统是:95,98 或NT。

2,外部链接的css文件的html语法是:

~~~~~~~~~注意,加了ID。
用js调用它的链接的语法是:
document.all.stylelink.href

3,检验navigator.appVersion属性的值中的关键字的语句是:
if (x.indexOf("95")!="-1") //意为:有"95"这两个字。
{
}

4,所以,函数这样写:



5D荣誉斑竹

职务:普通成员
等级:5
金币:10.0
发贴:3292
注册:2001/5/24 10:01:29
#22001/10/23 11:09:35
非常好,我想做一个站,随机出现不同的效果,利用随机出现不同的CSS



老张

职务:普通成员
等级:5
金币:10.0
发贴:2796
注册:2001/5/11 12:41:55
#32001/10/23 12:47:13
再次表示感谢,没办法给你加分了



求可知

职务:普通成员
等级:3
金币:10.0
发贴:718
注册:2001/8/18 12:32:59
#42001/10/23 17:07:00
不错,利用对系统的判断语句可以实现简单的交互网页:-)



老张

职务:普通成员
等级:5
金币:10.0
发贴:2796
注册:2001/5/11 12:41:55
#52001/10/23 23:24:45
哎!原打算在Win9x下面实现:Win2000的"MS Shell Dlg"字体效果,可是没找到一种合适的。Arial 字形差不多,但稍大了点,最不好的是常用的符号"<>"效果差别太大。
其它字体好像就更不像了。
请推荐一种合适的字体:在Win9x下面实现:Win2000的"MS Shell Dlg"字体效果



5D荣誉斑竹

职务:普通成员
等级:5
金币:10.0
发贴:3292
注册:2001/5/24 10:01:29
#62001/10/24 1:56:57
这个字体很奇怪啊,没有字体文件的



老张

职务:普通成员
等级:5
金币:10.0
发贴:2796
注册:2001/5/11 12:41:55
#72001/10/24 17:27:03
这个字体是Win2K里面的:Microsoft Sans Serif,
它是通过注册表的一个键置用替代的方式定义的。
但Win9x下没有这个字体。



王原

职务:普通成员
等级:1
金币:0.0
发贴:24
注册:2001/5/21 21:39:53
#82001/10/24 22:02:09
下面的代码来自微软的网站(微软的网站其实是兼容各种浏览器最好的):
function BrowserData(sUA)
{
	this.userAgent = sUA.toString();
	var rPattern = /(MSIE)\s(\d+)\.(\d+)((b|p)([^(s|;)]+))?;?(.*(98|95|NT|3.1|32|Mac|X11))?\s*([^\)]*)/;
	if (this.userAgent.match(rPattern))
	{
		this.browser = "MSIE";
		this.majorVer = parseInt(RegExp.$2) || 0;
		this.minorVer = RegExp.$3.toString() || "0";
		this.betaVer = RegExp.$6.toString() || "0";
		this.platform = RegExp.$8 || "Other";
		this.platVer = RegExp.$9 || "0";
	}
	else if (this.userAgent.match(/Mozilla[/].*(95[/]NT|95|NT|98|3.1).*Opera.*(\d+)\.(\d+)/))
	{
		//"Mozilla/4.0 (Windows NT 5.0;US) Opera 3.60  [en]";
		this.browser = "Opera";
		this.majorVer = parseInt(RegExp.$2) || parseInt(RegExp.$2) || 0;
		this.minorVer = RegExp.$3.toString() || RegExp.$3.toString() || "0";
		this.platform = RegExp.$1 || "Other";
	}
	else if (this.userAgent.match(/Mozilla[/](\d*)\.?(\d*)(.*(98|95|NT|32|16|68K|PPC|X11))?/))
	{
		//"Mozilla/4.5 [en] (WinNT; I)"
		this.browser = "Nav";
		this.majorVer = parseInt(RegExp.$1) || 0;
		this.minorVer = RegExp.$2.toString() || "0";
		this.platform = RegExp.$4 || "Other";
	}
	else
	{
		this.browser = "Other";
	}
	this.getsNavBar = ("MSIE" == this.browser && 4 <= this.majorVer && "Mac" != this.platform && "X11" != this.platform);
	this.doesActiveX = ("MSIE" == this.browser && 3 <= this.majorVer && ("95" == this.platform || "98" == this.platform || "NT" == this.platform));
	this.fullVer = parseFloat( this.majorVer + "." + this.minorVer );
	this.doesPersistence = ("MSIE" == this.browser && 5 <= this.majorVer && "Mac" != this.platform && "X11" != this.platform);
}

var oBD = new BrowserData(window.navigator.userAgent);


由于这段代码完全兼容Netscape,所以可以实现高级的浏览器判别。具体字段的意思我就不解释了。



kurtf

职务:普通成员
等级:1
金币:1.0
发贴:151
注册:2001/7/21 9:29:26
#92001/10/26 8:34:13
但是有一个问题啊!自己机子上有的字体,而别人机子上又没有,岂不是白搭!
:(



5D荣誉斑竹

职务:普通成员
等级:5
金币:10.0
发贴:3292
注册:2001/5/24 10:01:29
#102001/10/27 16:29:25
可以检测用户的系统语言吗?
比如检测后进入中文版,big5,英文版。。。。



helmet

职务:版主
等级:4
金币:10.0
发贴:1559
注册:2004/1/30 15:59:27
#112001/10/28 13:16:54
window.navigator.browserLanguage 浏览器的语言。
window.navigator.systemLanguage 系统语言。

我的计算机是中文的,显示" zh-cn " .