Three.js利用Detector.js插件如何实现兼容性检测详解


Posted in Javascript onSeptember 26, 2017

前言

本文主要给大家介绍了关于Three.js用Detector.js插件实现兼容性检测的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。

其实Detector.js插件的代码很短,但是功能很全,

(1)判断canvas兼容。

(2)判断webgl兼容性。

(3)在页面添加不兼容提示信息。

这三个功能已经对兼容性检测足够了。

使用方式也很简单:

首先,将插件引入到页面:

<script src="examples/js/Detector.js"></script>

然后,在js里面添加一个判断:

if ( ! Detector.webgl ) Detector.addGetWebGLMessage();

就实现了兼容性的检测,是不是很简单,去测试一下吧。

下面,附上Detector.js插件代码:

/** 
 * @author alteredq / http://alteredqualia.com/ 
 * @author mr.doob / http://mrdoob.com/ 
 */ 
 
var Detector = { 
 
 canvas: !! window.CanvasRenderingContext2D, 
 webgl: ( function () { 
 
 try { 
 
  var canvas = document.createElement( 'canvas' ); return !! ( window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ) ); 
 
 } catch ( e ) { 
 
  return false; 
 
 } 
 
 } )(), 
 workers: !! window.Worker, 
 fileapi: window.File && window.FileReader && window.FileList && window.Blob, 
 
 getWebGLErrorMessage: function () { 
 
 var element = document.createElement( 'div' ); 
 element.id = 'webgl-error-message'; 
 element.style.fontFamily = 'monospace'; 
 element.style.fontSize = '13px'; 
 element.style.fontWeight = 'normal'; 
 element.style.textAlign = 'center'; 
 element.style.background = '#fff'; 
 element.style.color = '#000'; 
 element.style.padding = '1.5em'; 
 element.style.width = '400px'; 
 element.style.margin = '5em auto 0'; 
 
 if ( ! this.webgl ) { 
 
  element.innerHTML = window.WebGLRenderingContext ? [ 
  'Your graphics card does not seem to support <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" rel="external nofollow" rel="external nofollow" style="color:#000">WebGL</a>.<br />', 
  'Find out how to get it <a href="http://get.webgl.org/" rel="external nofollow" rel="external nofollow" style="color:#000">here</a>.' 
  ].join( '\n' ) : [ 
  'Your browser does not seem to support <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" rel="external nofollow" rel="external nofollow" style="color:#000">WebGL</a>.<br/>', 
  'Find out how to get it <a href="http://get.webgl.org/" rel="external nofollow" rel="external nofollow" style="color:#000">here</a>.' 
  ].join( '\n' ); 
 
 } 
 
 return element; 
 
 }, 
 
 addGetWebGLMessage: function ( parameters ) { 
 
 var parent, id, element; 
 
 parameters = parameters || {}; 
 
 parent = parameters.parent !== undefined ? parameters.parent : document.body; 
 id = parameters.id !== undefined ? parameters.id : 'oldie'; 
 
 element = Detector.getWebGLErrorMessage(); 
 element.id = id; 
 
 parent.appendChild( element ); 
 
 } 
 
}; 
 
// browserify support 
if ( typeof module === 'object' ) { 
 
 module.exports = Detector; 
 
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
JQuery UI DatePicker中z-index默认为1的解决办法
Sep 28 Javascript
基于jQuery的合并表格中相同文本的相邻单元格的代码
Apr 06 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
Jan 15 Javascript
javascript异步编程代码书写规范Promise学习笔记
Feb 11 Javascript
动态加载jQuery的方法
Jun 16 Javascript
BootStrapValidator校验方式
Dec 19 Javascript
jQuery延迟执行的实现方法
Dec 21 Javascript
React创建组件的三种方式及其区别
Jan 12 Javascript
jQuery插件HighCharts实现的2D面积图效果示例【附demo源码下载】
Mar 15 Javascript
React Native时间转换格式工具类分享
Oct 24 Javascript
JS实现深度优先搜索求解两点间最短路径
Jan 17 Javascript
JS实现TITLE悬停长久显示效果完整示例
Feb 11 Javascript
JS+jQuery实现注册信息的验证功能
Sep 26 #jQuery
详解vue-cli中的ESlint配置文件eslintrc.js
Sep 25 #Javascript
JavaScript 自定义事件之我见
Sep 25 #Javascript
详解在vue-cli中使用路由
Sep 25 #Javascript
Bootstrap一款超好用的前端框架
Sep 25 #Javascript
vue封装第三方插件并发布到npm的方法
Sep 25 #Javascript
javascript input输入框模糊提示功能的实现
Sep 25 #Javascript
You might like
【COS正片】蕾姆睡衣cos,纯洁可爱被治愈了 cn名濑弥七
2020/03/02 日漫
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
使用php统计字符串中中英文字符的个数
2013/06/23 PHP
php实现memcache缓存示例讲解
2013/12/04 PHP
超级强大的表单验证
2006/06/26 Javascript
变量声明时命名与变量作为对象属性时命名的区别解析
2013/12/06 Javascript
Easyui 之 Treegrid 笔记
2016/04/29 Javascript
jQuery查找节点方法完整实例
2016/09/13 Javascript
vue.js实现仿原生ios时间选择组件实例代码
2016/12/21 Javascript
vue.js 实现输入框动态添加功能
2018/06/25 Javascript
vue-cli3全面配置详解
2018/11/14 Javascript
小试小程序云开发(小结)
2019/06/06 Javascript
js实现随机数小游戏
2019/06/28 Javascript
JS实现网站楼层导航效果代码实例
2020/06/16 Javascript
vue页面跳转实现页面缓存操作
2020/07/22 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
python中关于日期时间处理的问答集锦
2013/03/08 Python
Python中shutil模块的学习笔记教程
2017/04/04 Python
python使用mysql数据库示例代码
2017/05/21 Python
利用python实现微信头像加红色数字功能
2018/03/26 Python
Python用for循环实现九九乘法表
2018/05/31 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
有关Python的22个编程技巧
2018/08/29 Python
pyqt 多窗口之间的相互调用方法
2019/06/19 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
Python把图片转化为pdf代码实例
2020/07/28 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
extern在函数声明中是什么意思
2014/01/19 面试题
外贸业务员的岗位职责
2013/11/23 职场文书
毕业实习个人鉴定范文
2013/12/10 职场文书
《月亮湾》教学反思
2014/04/14 职场文书
学校做一个有道德的人活动方案
2014/08/23 职场文书
2014党员学习兰辉先进事迹思想汇报
2014/09/17 职场文书
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
go:垃圾回收GC触发条件详解
2021/04/24 Golang