对象检测和浏览器检测
对象检测是避免浏览器问题的最佳助手。不依赖浏览器种类和版本,依赖浏览器能力,一旦知道访问者的浏览器支持某些对象,就能安全启动脚本。
function isCompatible(other) {
// 使用能力检测来检测是否支持某些对象
if( other===false
|| !Array.prototype.push
|| !Object.hasOwnProperty
|| !document.createElement
|| !document.getElementsByTagName
) {
alert('TR- if you see this message isCompatible is failing incorrectly.');
return false;
}
return true;
}
使用对象检测的原则是:标准优于专有方法,先检查W3C的标准,再检查特定浏览器的专有方法。
很多情况下,尽量使用对象检测方法,因为其向前兼容性好。而浏览器检测,一来浏览器版本很多,解决了现有问题,但是将来还会有新的浏览器种类,或者新的浏览器版本,支持更多的属性和方法,但是现有脚本的检测程序又限制了这些新的种类,这样的浏览器检测向前兼容性不好。
转载于:https://www.cnblogs.com/taocom/archive/2012/04/07/2435819.html
对象检测和浏览器检测相关推荐
- JS window对象 Navigator对象 Navigator 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本。...
Navigator对象 Navigator 对象包含有关浏览器的信息,通常用于检测浏览器与操作系统的版本. 对象属性: 查看浏览器的名称和版本,代码如下: <script type=" ...
- userAgent,JS用户代理检测——判断浏览器内核、浏览器、浏览器平台、windows操作系统版本、移动设备、游戏系统
1.识别浏览器呈现引擎 为了不在全局作用域中添加多余变量,这里使用单例模式(什么是单例模式?)来封装检测脚本.检测脚本的基本代码如下所示: 1 var client = function() { 2 ...
- php事件检测,细说浏览器特性检测(2)-通用事件检测_jquery
在上一篇中介绍了jQuery1.4版本新增的几个浏览器特性检测方案和具体的目的,本文将以事件为中心,介绍一个较为完整.通用的事件检测方案. 事件检测,即检测某一事件在不同的浏览器中是否存在(可用),这 ...
- 检测Web浏览器上的内存泄漏
目录 背景 拍摄堆快照 一个真实世界的例子--AsyncSubject 附加说明 兴趣点 下载源 - 1.2 KB 背景 当您关闭浏览器选项卡时,所有内存都将被释放.内存泄漏在Web浏览器上很可能不是 ...
- 一个前端博客(9)——浏览器检测和加载
浏览器检测 浏览器检测是通过JavaScript BOM的navigator对象实现的. Navigator.userAgent W3C上:userAgent 属性是一个只读的字符串,声明了浏览器用于 ...
- 用户代理检测与浏览器Ua详细分析
. 首页 博客园 联系我 前言:用户代理字符串与用户代理检测. 先看结论/可用代码. 浏览器市场份额现状. Mozilla Firefox. Microsoft Internet Explorer. ...
- js+jquery检测用户浏览器型号(包括对360浏览器的检测)
做网站,js检测用户浏览器的版本,是经常要使用到,今天自己写了一个js,完成了对于一些常见浏览器的检测,但是,偏偏对于360浏览器的检测没有任 何办法,研究了一会儿,无果.无论是360安全浏览器,还是 ...
- 一些js代码,自己备用的。高手不要笑话我。。(跨浏览器基础事件,浏览器检测,判断浏览器的名称、版本号、操作系统)...
跨浏览器基础事件 View Code 1 //跨浏览器添加事件 2 function addEvent(obj, type, fn) { 3 if (obj.addEventListener) { 4 ...
- php浏览器类型检测工具,php检测客户端浏览器类型的简单示例
这篇文章主要为大家详细介绍了php检测客户端浏览器类型的简单示例,具有一定的参考价值,可以用来参考一下. 对php检测客户端浏览器类型代码感兴趣的小伙伴,下面一起跟随512笔记的小编两巴掌来看看吧! ...
最新文章
- 关于敏捷开发的最佳实践和工具
- linux编程取消wait函数,Linux编程基础之进程等待(wait()函数).pdf
- memory matlab,memory – 在MATLAB中处理大量结构
- .net平台的rabbitmq使用封装
- activiti bpmn 安装不上_小猿圈之Eclipse安装Activiti插件(流程设计器)
- Linux下安装 Indy 到 Lazarus
- C#算法设计排序篇之04-选择排序(附带动画演示程序)
- 快速理解孤儿进程和僵尸进程
- 快手小剧场推出独立APP“追鸭”
- 如何获取k8s拓扑_k8s从安装到精通--Service 拓扑介绍
- Python 绘图利器 —— ggplot
- 【Prison Break】第四天(3.31)
- HDU 1576 A/B 扩展欧几里德算法
- Java解析KML文件
- docker image 重命名
- sus补丁分发,局域网自动打补丁服务的架设过程
- 荣耀绽放 | 白玉兰酒店荣膺金光奖“中国发展潜力酒店品牌”奖项
- [数据分析与可视化] Python绘制数据地图2-GeoPandas地图可视化
- 分镜头脚本表格模板下载
- JS逆向之巨量创意signature签名
热门文章
- c语言中指针数组赋值字符串,C语言—用结构体指针给数组赋值(结构体指针指向字符串,给字符串赋值)...
- mysql 查询后怎么定位列_MySQL如何定位并优化慢查询sql
- 画活动图教程_二次元人物头发怎么画?画好头发有什么技巧?
- libsvm使用心得
- 到底什么是云计算-转自http://blog.csdn.net/adwu73
- [vijos P1919] 最有活力的鲜花
- 【NOI2002】贪吃的九头龙
- 目前我国家庭计算机用户接入因特网的下述,目前我国家庭计算机用户接入因特网的下述几种方法中,速度最快的是________ 。...
- Coins POJ - 1742(题解)
- 今日头条屏幕适配方案落地研究