- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些获取浏览器名称和浏览器版本号的javascript。一切正常;我得到了正确的名称和正确的版本,除非它是一个特定的站点。在该特定站点上,我的 IE9 显示的不是版本 9,而是版本 8。如果我再次在其他浏览器中测试,名称和版本都是正确的。问题就在IE中。也不只是 IE9;该特定站点上的 IE8 显示版本 7。我也刚刚用 javascript 制作了一个单独的 HTML 页面,我得到了正确的版本号。代码如下:
<html>
<head>
<script type="text/javascript">
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) {
alert("this.versionSearchString: " + this.versionSearchString);
alert("useragent: " + 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>
function browserCheck() {
var invalid = false;
var browser = BrowserDetect.browser;
var version = BrowserDetect.version;
alert("Browser: " + browser + ", Version: " + version);
if (browser == 'Firefox'){
if (parseFloat(version) < parseFloat('3.0')){
invalid = true;
}
} else if (browser == 'Explorer'){
if (parseFloat(version) < parseFloat('8.0')){
invalid = true;
}
} else {
invalid = true;
}
if (invalid){
//some action
}
}
</script>
</head>
<body onload="browserCheck()">
</body>
</html>
是否有任何原因导致特定站点显示错误的浏览器版本?
最佳答案
IE9 https://learn.microsoft.com/en-us/archive/blogs/ie/introducing-ie9s-user-agent-string和 IE8 https://learn.microsoft.com/en-us/archive/blogs/ie/the-internet-explorer-8-user-agent-string-updated-edition具有兼容 User Agent 的兼容模式(UA) 字符串。因此,您可以使用 IE9,但在 兼容模式 下查看网站,这可以将 UA 更改为 IE8,这可能就是您所看到的。
如果你不介意一个完整库的额外开销,jQuery 有可靠的 browser detection但是内置,我相信如果 IE 欺骗 UA,它仍然会遇到同样的问题。 编辑 实际上,似乎确实有一个解决方法 - 请参阅 Detect IE8 Compatibility Mode ,但同样可能只是用于浏览器检测的大量开销。
但总的来说(正如其他人所提到的)UA 嗅探是不可靠的,因为它很容易被欺骗。
关于javascript - MSIE版本不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6918106/
我在让简单的 HTML5 DOM 处理在 MSIE 9 上工作时遇到问题。它在没有 DOCTYPE 标记的情况下工作。但是由于包含 DOCTYPE html(表示 html5),MSIE 9 不处理它
任何人都知道什么样的配置会导致 MSIE 8 报告一个字符串,其中还包含 MSIE 6(精简版本到最小值)? Mozilla/4.0 (compatible; MSIE 8.0; Windows NT
我正在尝试在 MVC 4 View 中创建 JQGrid 并获取 Unable to get property 'msie' of undefined or null reference 添加 JQG
我目前在 IE9 中遇到以下错误 - 对于以下 Jquery 函数,无法获取属性“msie”对象的值为 null 或未定义的值。 我正在使用 Jquery-1.8.2 插件来实现以下 jquery 功
我可以在 Firefox 中以编程方式轻松设置 2+ 个元素的选择,但是在 IE 上没有成功,所以我希望这里的任何人都可以帮助我。 最佳答案 IE 不支持多个并发选定的 TextRanges,无论是通
我试图在 MSIE 中重新调整两个按钮的大小,使它们变得超大,但我得到了难看的别名。 ugly button button { height:100px;
这适用于 FF、Chrome 和除 IE8 以外的其他浏览器: Please select a color $('.cart_warning').css({opacity: 0, color
在 Chrome 上调试时,我经常使用控制台即时执行 JavaScript 命令,例如在断点处检查变量。 如何在 MSIE 的开发工具中做同样的事情? 当我在控制台中输入一些东西时,例如 consol
我正在尝试在 IE 中重现径向渐变,元素的背景颜色和径向不透明度以及子元素的另一种颜色。但是元素是圆形的,半透明的颜色超出了圆度。四舍五入是用 pie.css 实现,所以它是围绕这些东西的 vml。有
谁能为此想到一个优雅的降级选项?它在 Chrome 和 Firefox 中看起来不错,但由于 MSIE 不支持文本剪辑 CSS 选项,因此在该浏览器中看起来很差。 div#svg-heading {
出于某种目的,我想将 Window.Event 对象缓存在变量中 并在以后使用它,但 MSIE 一直告诉我这是“未知”。 只需在 IE 中运行下面的代码,你就会明白我的意思了 我只想问一下怎么会这样?
我的以下 css 代码在 msie 中不起作用。 #block a { border-right: 2px none #eee; border-bottom: 2px none #eee;
这可能是一个需要回答的微不足道的问题,但是有没有等同于 input { border: initial; 可以在 IE8 和 9 中运行吗? 如果有人知道颜色是什么(因为在其他浏览器中可以用 init
我认为这确实是 Microsoft Internet Explorer 10 中的错误,但我在任何地方都找不到对该问题的任何解释。可以在 http://jsfiddle.net/37Bu5/ 找到问题
模仿 Internet Explorer 6 中的 CSS 属性最小宽度的最终方法是什么?最好不要尝试吗? 最佳答案 foo { min-width: 100px } // for ever
这个问题在这里已经有了答案: Internet Explorer 11 detection (12 个答案) 关闭 8 年前。 我不想让用户使用 Microsoft Internetexplorer(
这个问题在这里已经有了答案: Internet Explorer 11 detection (12 个答案) 关闭 8 年前。 我不想让用户使用 Microsoft Internetexplorer(
我正在构建一个网页,该网页使用slidejs图像 slider 来显示一系列图像。 当我从 Firefox 和 Safari 运行页面时,页面看起来应有的样子。然而,当我在 MSIE 9 中运行相同的
我正在尝试使用 Win32 API 清除 WinInet 缓存 - 通过使缓存条目无效或删除它们(无关紧要)。我找不到任何方法对整个缓存执行此操作(除了迭代每个条目 - example in C# 、
以下 Jasmine 测试适用于 PhantomJS 或 Chrome,但不适用于 MSIE 10。 describe("utility", function () { var utility
我是一名优秀的程序员,十分优秀!