为什么不推荐使用浏览器嗅探?

2024-01-27

你到处都会听到这样的说法:使用 javascript 嗅探用户代理字符串来检测浏览器版本是一件非常糟糕的事情。最新版本的 jQuery 现已弃用$.browser物体代替$.support。但是,如果出现仅影响 IE 而不是其他浏览器的错误或问题,并且我不确定原因,我该怎么办?

就我而言,一些 jQuery 代码使工具提示出现和消失,并在鼠标悬停和鼠标移出时显示动画。在 Internet Explorer 中,它看起来很糟糕,而且令人不安,工具提示 div 在隐藏之前会变成非常大的尺寸,如果您将鼠标放在带有提示的一堆项目上,它真的会杀死浏览器。我不知道 IE 不“支持”哪些特定功能,而我应该对其进行测试,因此嗅探 IE 并使用不同的方法要容易得多。我可以/应该做什么?


因为仅仅嗅探用户代理(这就是 jquery 填充 $.browser 对象的作用)并不能告诉你全部真相。

用户代理字符串可以在许多浏览器中轻松更改,因此,例如,如果您禁用某些在 IE 中不起作用的功能,seems要使用 IE,您可能会意外地禁用某些未来浏览器或用户的这些功能,这些功能只是出于某种原因(例如为了绕过基于浏览器嗅探的限制),pretend使用 IE。

这似乎不是一个太大的问题,但它仍然是不好的做法.

是的,我也是 IE 嗅探者。我用

$.browser.msie && document.all

只是要确定。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么不推荐使用浏览器嗅探? 的相关文章

  • 使用 setAttribute() 添加“onclick”函数

    为什么以下不起作用 显然该功能尚未添加 function activatetypeinput event devtype The function is called but it doesn t set the attribute var
  • 如何在 Firefox 控制台中访问附加内容脚本?

    我为 Firefox 和 Chrome 开发了一个插件 它有内容脚本 我想在浏览器选项卡的控制台中访问它们 在 Firefox 上网页控制台 https developer mozilla org en US docs Tools Web
  • Javascript DOM setAttribute 在函数调用中不起作用

    我有一个带有输入元素的 HTML 文件 我希望向其中添加一个名为 valid fieldset011 的新属性 该属性用作 AngularJS 验证器的链接 输入元素具有属性 id fieldset011 如果我使用以下脚本 包含在脚本标签
  • Javascript - 在加载所有图像后执行

    看了别人的问题我想 window onload 会回答我的问题 我已经尝试过这个 但它会在页面加载时立即执行代码 而不是在图像加载之后 如果有什么区别的话 图像来自 CDN 并且不是相对的 有人知道解决办法吗 我没有使用 jQuery 想要
  • html 表格单元格的条件格式

    是否有现成的解决方案可以对 HTML 表格进行条件格式设置 通过条件格式 我更感兴趣的是根据该列或其他列 在同一个表中 的值 数字 将不同的颜色作为单元格背景 类似于我们在 Excel 条件格式 gt 色阶 gt 红黄绿中的内容 我想在通过
  • 如何导入和导出 javascript ES6 类

    我是 javascript 和 nodejs 的新手 我正在使用这个项目来发展我的技能并学习新技术 目前我的项目使用多个相互依赖的类 类文件位于不同的目录中 我当前正在尝试使用 export 和 require 语句来允许在其他文件中引用类
  • Web 组件 - 服务/非 html 组件

    所以我来自 Angular 想看看如何创建vanilla Web components 现在 从 Angular 开始 我们倾向于将事物分开 组件 充当 HTML CSS 和一些 javascript 然后是 服务 主要负责收集数据和执行不
  • 使用 JavaScript 生成 PDF 文件

    我正在尝试将 XML 数据从网页转换为 PDF 文件 并且希望能够完全在 JavaScript 中完成此操作 我需要能够绘制文本 图像和简单的形状 我希望能够完全在浏览器中完成此操作 我刚刚写了一个名为jsPDF https github
  • JavaScript 测验在提出所有问题之前结束

    我现在正在学习 JavaScript 并且正在创建一个测验 我的测验运行正常 控制台中没有任何错误 但它会跳过问题 有时会在回答所有问题之前结束测验 即使给出正确答案 也会减少时间 我不太确定为什么它会这样做 因为在我看来它的编码是正确的
  • 为什么 Web Worker 性能在 30 秒后急剧下降?

    我正在尝试提高在网络工作人员中执行时脚本的性能 它旨在解析浏览器中的大型文本文件而不会崩溃 一切都运行得很好 但我注意到使用网络工作者时大文件的性能存在严重差异 于是我做了一个简单的实验 我在同一输入上运行脚本两次 第一次运行在页面的主线程
  • 在管道中重用变量的功能方式

    在 javascript 和 typescript 中与 Ramda 一起使用函数式编程 我经常发现自己编写如下代码 const myFun c gt const myId c id const value pipe getAnotherO
  • Google 地图 API:忽略 DirectionService 请求中的季节性限制

    我目前正在开发一张地图 其中显示两点之间的最短路线 使用不同的交通工具 我注意到 有时 例如在冬季关闭的道路不会被考虑在内 我发现我可以使用方向服务 下面的代码 忽略高速公路 收费站和渡轮 但我一生都无法弄清楚如何 是否可以忽略季节性限制
  • 如何检测元素内容何时发生变化

    我正在寻找一种方法来监视元素内动态填充 无页面重新加载 内容 以便我可以将类添加到另一个元素 到目前为止我有这个 HTML div class message container div class messages error span
  • 如何处理requireJs超时错误?

    我正在使用 require js 作为加载框架编写一个移动混合应用程序 我遇到加载错误的问题 我想做的是在设备离线且无法下载在屏幕上显示地图所需的 google 地图 API 脚本时设置后备解决方案 我得到的只是 Uncaught Erro
  • Ember Data 中出现“超出最大调用堆栈大小”错误的原因可能是什么?

    Ember 发布新版本 3 6 0 后 我开始在控制台中收到错误 rsvp js 24 未捕获 RangeError 超出最大调用堆栈大小 在 WeakMap get 在 getCacheFor metal js 25 在 Computed
  • JavaScript 数组扩展语法的时间复杂度是多少?

    我想知道在 JavaScript 中使用数组扩展的时间复杂度是多少 是线性 O n 还是常数 O 1 下面的语法示例 let lar Math max nums 传播称为 Symbol iterator 有关对象的属性 对于数组 这将迭代数
  • JavaScript:测试与执行

    我想知道检查字符串 例如邮件 密码等 的最佳方法是什么 i exec a vs i test a exec返回值 test true test 1 way var mail req body mail if check mail exec
  • 在 HTML5 iOS 7 / iOS 8 中显示十进制键盘

    经过几个小时的搜索后 我只是有一个简单的问题 是否有可能在网络浏览器输入字段中显示小数键盘 input type number 只显示数字 但我需要在左下角使用逗号或点 我尝试过任何事情 pattern step等等 但没有显示十进制键盘
  • Flowtype 属性“msg”缺失为 null 或未定义

    我发现 Flow 很难用 我明白那个Array find可以返回或未定义 因此 通过阅读以下内容 github Array find on Array 引发 https github com facebook flow issues 351
  • 使用 JQuery 根据下拉列表选择的值显示/隐藏控件

    我正在尝试使用 JQuery 根据下拉菜单的选定索引显示 隐藏 div 标签 但它不起作用 任何帮助将不胜感激 Thanks

随机推荐

  • TPL 数据流与普通信号量

    我需要制定一个可扩展的流程 该进程主要有 I O 操作和一些次要的 CPU 操作 主要是反序列化字符串 该流程在数据库中查询 url 列表 然后从这些 url 中获取数据 将下载的数据反序列化为对象 然后将部分数据保存到 crm 动态以及另
  • 在 FlulClient 中禁用自动重定向

    我在用FlulHttp http tmenier github io Flurl fluent http 我想禁用某些 API 调用的AllowAutoRedirect 我知道如何让 System Net Http HttpClient 不
  • 使用 MySQL WorkBench 导入...错误 ERROR 1046 (3D000)

    场景 本地搭建RoR环境进行开发 生产位于 EngineYard GitHub 上 现在一切正常 除了数据库没有导入 我有一个从我的产品 EY 网站获取的 sql 文件 现在我需要将它导入到本地的 MySQL 中 我正在使用工作台 因为我是
  • 枚举强名称CSP的容器名称

    我正在尝试查找一些有关如何 如果可能的话 枚举强名称 CSP 加密服务提供商 中的所有容器名称的信息 本质上 当你输入sn exe i key snk MyContainerName 公钥和私钥对存储在所谓的 容器 中 稍后 在您的代码中
  • 在谷歌地图或谷歌地球插件中惰性/需求加载KML?

    一旦 Google 地图或 Google 地球插件实例启动 是否可以延迟加载 KML 文件 也许有一个 边界框 事件 我可以用它来排队所需的 KML 文件 编辑 gt 找到答案 发现了这个小花絮 http code google com a
  • SVN更新,未提交更改的本地文件会发生什么?

    假设我正在处理一个本地文件 它是存储库的一部分 本地文件具有本地更改 并且已保存到本地文件但尚未提交 当我去更新整个存储库时会发生什么 SVN 是否会尝试将 HEAD 与本地副本合并 希望没有冲突 或者 SVN 是否会保留本地副本直到稍后提
  • “欺骗” SQL Server 接受来自 R 的文件

    我在 R 的本地环境中有一个文件 大约 1000000 行和 15 列 我正在尝试将此文件上传到 SQL 服务器 library odbc library DBI library RODBC dbWriteTable my connecti
  • 无法在本地主机上测试 facebook like 按钮(与以前不同)

    我开发了一个带有 Facebook 社交插件 点赞 推荐和发送按钮 的小网页 直到大约一个月前 我才能在本地主机上成功测试按钮和单击事件 但突然按钮现在无法在本地主机上工作 仅当我通过 localtunnel 将网页部署在公共 IP 上时
  • 修剪 ggplot2 中的第一个和最后一个标签

    我有一个按天列出两种类型数据的图 我希望只修剪图中的第一个和最后一个标签 这是数据的可重现示例 library dplyr library ggplot2 library scales dates lt paste0 2014 01 1 3
  • 读取 D3 中没有标题行的 csv/tsv

    我有 CSV 数据 看起来像 Data 1 1 10 1 2 50 1 3 5 etc 我正在尝试读入数据 但是 我的初始数据不包含标题行 如上所示 因此它将第一个数据行作为标题 1 1 10 有没有办法解决 我想在读取数据后设置标题名称
  • 如何使用 jQuery 验证插件以编程方式检查表单是否有效

    我有一个带有几个按钮的表单 我正在使用 jQuery 验证插件http jquery bassistance de validate http jquery bassistance de validate 我只是想知道是否有任何方法可以检查
  • 为什么我的侧边栏被推到内容下方?

    我正在尝试使用 HTML 和 CSS 设置模板 但我的侧边栏出现问题 它似乎被推到了我的内容下方 尽管它应该是在左侧 我不明白为什么 有没有人有什么建议 Example http jsfiddle net zDdfn http jsfidd
  • 在 SELECT 语句中使用 UDF

    我制作了一个用于计算营业时间的用户定义函数 这是我的UDF CREATE FUNCTION fn GetBusinessHour date datetime addHours int RETURNS datetime AS BEGIN DE
  • 括号() 和 SQL 查询性能

    在where语句中 是否添加不必要的括号 影响SQL性能 Example SELECT FROM table WHERE name John AND age 30 AND address Some Street AND height 510
  • Docker 容器拒绝连接

    我已经为此挣扎了相当长一段时间 我有一个 Django 应用程序 我正在尝试将其打包到容器中 问题是 当我发布到某个端口 8001 时 主机拒绝我的连接 docker machine ip default 192 168 99 100 当我
  • Derby 数据库导出为单个文件?

    我正在制作一个小型应用程序 并且正在使用嵌入式 derby 数据库 我希望该应用程序能够将整个数据库保存到一个文件中 该文件可以存储在硬盘驱动器上 并且还可以通过在未来 关于我该怎么做的任何线索或例子 这可能会帮助你 1 资源1 http
  • wpf按钮点击事件

    In this question https stackoverflow com questions 4720446 wpf adding tabitems dynamically 4722047 4722047我问了关于添加TabItem
  • Knockout.Js 数组过滤器语法

    刚刚开始接触 javascript 和 knockout js 我找到了很多我想要实现的目标的例子 我觉得我可能忽略了一个小语法错误 我正在尝试过滤已返回的集合 这个任务 通过 ajax json 从服务器获取 我的那个工作得很好 我想做的
  • PostgreSQL 未出现 RDS 日志记录

    我按照说明进行操作here https docs aws amazon com AmazonRDS latest UserGuide USER LogAccess Concepts PostgreSQL html 我的参数组更改的摘要如下所
  • 为什么不推荐使用浏览器嗅探?

    你到处都会听到这样的说法 使用 javascript 嗅探用户代理字符串来检测浏览器版本是一件非常糟糕的事情 最新版本的 jQuery 现已弃用 browser物体代替 support 但是 如果出现仅影响 IE 而不是其他浏览器的错误或问