对于相同的浏览器,在Javascript中获取具有不同URL的不同版本信息
For the same browser getting different version info with different URL in Javascript
嗨,我需要通过JavaScript检测浏览器版本。从这里我能够得到我所期望的。但是,当我通过本地主机和主机名访问页面时,返回的版本是不同的。
创建一个简单的HTML页面(浏览器版本.html),源代码如下。
<html>
<script>
var BrowserDetect = {
init: function () {
this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
this.version = this.searchVersion(navigator.userAgent)
|| this.searchVersion(navigator.appVersion)
|| "an unknown version";
this.OS = this.searchString(this.dataOS) || "an unknown OS";
},
searchString: function (data) {
for (var i=0;i<data.length;i++) {
var dataString = data[i].string;
var dataProp = data[i].prop;
this.versionSearchString = data[i].versionSearch || data[i].identity;
if (dataString) {
if (dataString.indexOf(data[i].subString) != -1)
return data[i].identity;
}
else if (dataProp)
return data[i].identity;
}
},
searchVersion: function (dataString) {
var index = dataString.indexOf(this.versionSearchString);
if (index == -1) return;
return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
},
dataBrowser: [
{
string: navigator.userAgent,
subString: "Chrome",
identity: "Chrome"
},
{ string: navigator.userAgent,
subString: "OmniWeb",
versionSearch: "OmniWeb/",
identity: "OmniWeb"
},
{
string: navigator.vendor,
subString: "Apple",
identity: "Safari",
versionSearch: "Version"
},
{
prop: window.opera,
identity: "Opera"
},
{
string: navigator.vendor,
subString: "iCab",
identity: "iCab"
},
{
string: navigator.vendor,
subString: "KDE",
identity: "Konqueror"
},
{
string: navigator.userAgent,
subString: "Firefox",
identity: "Firefox"
},
{
string: navigator.vendor,
subString: "Camino",
identity: "Camino"
},
{ // for newer Netscapes (6+)
string: navigator.userAgent,
subString: "Netscape",
identity: "Netscape"
},
{
string: navigator.userAgent,
subString: "MSIE",
identity: "Explorer",
versionSearch: "MSIE"
},
{
string: navigator.userAgent,
subString: "Gecko",
identity: "Mozilla",
versionSearch: "rv"
},
{ // for older Netscapes (4-)
string: navigator.userAgent,
subString: "Mozilla",
identity: "Netscape",
versionSearch: "Mozilla"
}
],
dataOS : [
{
string: navigator.platform,
subString: "Win",
identity: "Windows"
},
{
string: navigator.platform,
subString: "Mac",
identity: "Mac"
},
{
string: navigator.userAgent,
subString: "iPhone",
identity: "iPhone/iPod"
},
{
string: navigator.platform,
subString: "Linux",
identity: "Linux"
}
]
};
BrowserDetect.init();
</script>
<script type="text/javascript">
navigator.sayswho= (function(){
var N= navigator.appName, ua= navigator.userAgent, tem;
var M= ua.match(/(opera|chrome|safari|firefox|msie)'/?'s*('.?'d+('.'d+)*)/i);
if(M && (tem= ua.match(/version'/(['.'d]+)/i))!= null) M[2]= tem[1];
M= M? [M[1], M[2]]: [N, navigator.appVersion,'-?'];
return M;
})();
alert(navigator.sayswho);
</script>
<html>
现在,当我使用以下URL访问上面的页面时,我得到的值为MSIE,8.0
http://localhost:8080/docs/BrowserVersion.html,
但是当我使用以下 URL 访问同一页面时,我得到的值为 MSIE,7.0。
http://mylocalhost:8080/docs/BrowserVersion.html
为什么浏览器版本在两个版本的 URL 之间更改。
注意:我的主机文件包含以下条目
127.0.0.1 localhost
127.0.0.1 mylocalhost
有什么想法吗?
您必须禁用IE的本地域兼容性视图。
转到IE的兼容性视图设置,然后取消选中第二个选项"在兼容性视图中显示Intranet站点"。
浏览器
/浏览器版本的 DOM 对象检测的非常基础...
var z = document.getElementsByTagName('body')[0];
if (z.style.MozBinding!=undefined)
{
browser='Firefox';
}
else if (window.opera)
{
//Opera up to 12.5
}
else if (z.style.scrollbar3dLightColor!=undefined)
{
browser='msie';
}
else if (z.style.khtmlMarginBottomCollapse!=undefined && z.style.WebkitBorderRadius==undefined) {browser='Safari'; browser_version='2.0';}
else if (z.style.WebkitBorderRadius!=undefined || z.style.khtmlMarginBottomCollapse!=undefined)
{
if (z.style.item=='function item() { [native code] }')
{
browser='Chrome';
}
else
{
browser='Safari';
}
}
else if (z.style.KhtmlBorderRadius!=undefined) {browser='Konqueror';
相关文章:
- 访问布局信息是否也会导致浏览器重排
- JS编译器/包管理器,用于版本控制
- jQuery-2.1.1.min.js或最新版本jQuery-2.13.min.js不会't支持'@
- Chrome加载旧版本的Javascript文件
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 定义完全独立的样式信息
- 使用html2canvas获取基本信息
- JS表单提交"无法使用Chrome数据保护程序加载此页面.尝试重新加载页面.调试信息:POST CISmtuK
- 从信息框调用弹出图像库
- 如何在不传递此信息的情况下查找被调用的元素
- 将谷歌自动完成地址信息放在页面上,而不是表格中
- 为什么jQuery 1.8不能在IE8和InternetExplorer9中使用?(截至2012年9月的IE9最新版本)
- 如何设置jsfiddle's的javascript版本
- 如何通过解析类信息来使用jQuery创建类
- 同一HTML页面中的两个不同版本的JQuery
- YouTube作为弹出窗口在桌面版本上播放,但不在移动设备上播放
- 对于相同的浏览器,在Javascript中获取具有不同URL的不同版本信息
- Metro应用程序版本信息编程
- 在谷歌地图上打开/排列所有信息窗口(任何API版本)
- 我可以使用Javascript获得命令行信息吗?不是浏览器版本信息