- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在寻找一种用 JavaScript 识别 IE 的方法,突然间,我注意到浏览器被识别为 Mozilla:
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36 OPR/17.0.1241.53
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Win64; x64; Trident/5.0)
现在我想知道为什么这个浏览器被识别为 Mozilla
最佳答案
这是网站开发者和网络浏览器之间永无休止的 war 的结果。
每次浏览器推出新功能时,开发人员都希望使用该功能。但他们也需要处理不支持它的浏览器。
最明显的方法是使用 UA 字符串。寻找您知道支持该功能的浏览器,并相应地运行您的代码。很简单。
除了不是那么容易,因为不可避免地会发生几个月后,其他浏览器支持相同的功能。
所以现在其他浏览器有一个问题:网站被编写为使用他们支持的功能,但这些网站只为一个特定的浏览器激活该功能。
浏览器供应商的解决方案:修改他们的 UA 字符串,以欺骗网站激活该功能。
这种事情自 1990 年代以来一直在发生,当时 IE 和 Netscape 进行了“浏览器大战”(“Mozilla”是 Netscape 唯一的 UA 字符串名称,因此其他所有人都将其复制到他们的 UA 字符串中以保持兼容性),并且一直持续到今天(IE11 发布时,它的 UA 字符串与 IE10 的 UA 字符串完全不同,专门这样做是为了破坏浏览器嗅探代码)。
最终结果是所有主流浏览器的UA字符串都是一团糟。它们充满了奇怪的东西,例如竞争对手的名称、错误的版本号、多个版本号和其他晦涩的引用,所有这些都是为了愚弄任何愚蠢到试图阅读它的脚本。是的,解析它并获得可靠的浏览器检测可能几乎是可能的,但一旦任何浏览器发布新版本,它可能会再次中断。
最重要的是,为了增加困惑,大多数浏览器还提供配置设置,让用户能够更改 UA 字符串;并且已知一些第三方产品(防病毒、防火墙、代理等)也会修改或替换 UA 字符串,所有这些都使您更不可能通过解析得到可靠的响应。
那么,这一切的意义是什么?
作为开发人员,最好的办法就是完全忽略 UA 字符串。对于任何实际目的,它对你来说几乎毫无值(value)。如果您需要使用可能并非在所有浏览器中都可用的功能,通常最好进行功能检测而不是嗅探 UA 字符串(为此,您可能需要考虑 Modernizr library)。
只要假装 UA 字符串不存在,您作为开发人员的生活就会轻松很多。
关于internet-explorer - 为什么 IE9+、Chrome 和 Opera15+ 浏览器在用户代理中将自己标识为 Mozilla?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20215983/
我在显示带有顶部/底部边框和边框半径的 block 时遇到问题。不知道为什么边框内会出现内半径。请查看下面的屏幕截图和代码。 http://img703.imageshack.us/img703/30
前一段时间我为自己制作了一个小页面,我偶然发现了一个错误,此后一直无法回答。 打开时http://darngoodpictures.com/#showme您会在左侧和右侧看到导航箭头。这些完全是 CS
我们目前正在通过 https://addons.opera.com/developer/ 上传我们扩展的每个新版本 因为我们需要为 Chrome 和 Firefox 执行类似的任务,所以整个过程变得乏
我开发了一个 Opera 扩展。它工作正常。但是我需要在 Windows 注册表或 Windows 文件系统中安装我的扩展。我该怎么做? 最佳答案 NOTE: THIS QUESTION IS OPE
大多数专业网站都提到 Opera 用户代理都包含单词 《歌剧》 . This kinda old post一位 Opera 开发人员提到了字符串 'OPR' 反而。 重点是:我的网站定期收到来自“OP
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 9 年前。 Improve this
我在Dragonfly features page上看到除了稳定版之外,Dragonfly 还有实验版和前沿版。 当我在 Opera 中打开 Dragonfly 时,看起来正在使用稳定版本。如何让 O
Opera Unite (可以充当服务器的 Web 浏览器)刚刚发布,他们声称您可以构建 Web 服务,以便其他人可以访问您的浏览器。我有兴趣为该平台制作程序。 有人可以指点我一个关于如何为 Oper
我正在上传我的第一个 Opera 扩展。这很简单。它是一个启动弹出窗口的工具栏按钮。它在 Opera 开发者模式下运行良好。 Opera 不允许我成功上传它。它一直说缺少persona.ini 文件。
我正在使用 operatv 模拟器进行调试。我想知道是否存在远程调试,即我的应用程序在 Sony 上运行并在我的系统控制台上登录 最佳答案 如上所述: Download Opera and start
有什么方法可以使用 Opera 的用户 JavaScript 函数在特定的、开发人员定义的位置下载和存储文件吗? 谢谢。 最佳答案 事实上,只有小部件和 Opera 10 及更高版本才能实现纯 Jav
我用过this link并如前所述在本地安装了 Opera Dragonfly。但现在我无法加载 JavaScript 进行调试。附上错误截图。关于解决这个问题的任何想法? 我正在使用 Opera 1
是否有适用于 Opera 的 React 开发插件? Opera (DragonFly) 和 Chrome 开发工具看起来几乎相同。似乎没有支持 React 开发的 Opera 插件。考虑到它们几乎相
我正在尝试让 WebGL 与 Opera 12.0 (Mac OS X Lion) 一起运行。 Opera Website声明支持 WebGL,但如果我通过 WebGL check 检查它网站,Ope
是 WebKit 吗?急速? V8 引擎是专用于 Chrome 的吗? 最佳答案 WebKit 和 Presto 不是 Javascript 引擎,而是渲染引擎。 Opera 之前使用名为“Carak
我想知道 chrome.storage.sync 在 Opera 中是如何同步的。 文档谈到 Opera Sync,是 Opera Link 吗?是否有任何网页可以指导用户如何启用 chrome.st
我正在制作一个跨浏览器扩展,它覆盖了标准的“新标签”页面。 有一个manifest.json key ,称为 chrome_url_overrides : "chrome_url_overrides"
我正在为移动设备制作一个小部件,我想为我的小部件保存一些 xml 文件和图像文件,但是当我在 opera widget Mobile emulator for windows 中测试这段代码时,我没有
有人熟悉 CSS3 中的框阴影这个错误吗? 一开始它呈现正常。但是当上下滚动页面时(所以阴影进出可见区域)水平线的阴影会出错,需要重新加载才能正确渲染。我只在 Opera 中遇到过这种情况,在 IE(
这个问题不太可能帮助任何 future 的访问者;它只与一个小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,这些情况并不普遍适用于互联网的全局受众。为了帮助使这个问题更广泛地适用,visi
我是一名优秀的程序员,十分优秀!