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 相关文章推荐
Extjs407 getValue()和getRawValue()区别介绍
May 21 Javascript
javascript:void(0)的问题使用探讨
Apr 10 Javascript
jquery+html5制作超酷的圆盘时钟表
Apr 14 Javascript
jQuery中使用each处理json数据
Apr 23 Javascript
简介AngularJS中使用factory和service的方法
Jun 17 Javascript
jQuery实现向下滑出的平滑下拉菜单效果
Aug 21 Javascript
分享bootstrap学习笔记心得(组件及其属性)
Jan 11 Javascript
原生js实现节日时间倒计时功能
Jan 18 Javascript
提高JavaScript执行效率的23个实用技巧
Mar 01 Javascript
jQuery实现的鼠标拖动画矩形框示例【可兼容IE8】
May 17 jQuery
浅析Vue下的components模板使用及应用
Nov 27 Javascript
解决Vue项目中tff报错的问题
Oct 21 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
PHP开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
php 安全过滤函数代码
2011/05/07 PHP
PHP的serialize序列化数据以及JSON格式化数据分析
2015/10/10 PHP
浅谈PHP中的面向对象OOP中的魔术方法
2017/06/12 PHP
PHP实现通过文本文件统计页面访问量功能示例
2019/02/13 PHP
PHP笛卡尔积实现原理及代码实例
2020/12/09 PHP
js转化毫秒为时间格式代码
2014/04/10 Javascript
JavaScript中具名函数的多种调用方式总结
2014/11/08 Javascript
对比分析json及XML
2014/11/28 Javascript
node.js中的fs.link方法使用说明
2014/12/15 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
微信小程序 页面跳转和数据传递实例详解
2017/01/19 Javascript
bootstrap modal+gridview实现弹出框效果
2017/08/15 Javascript
JS实现的简单表单验证功能示例
2017/10/13 Javascript
详解离线安装npm包的几种方法
2018/11/25 Javascript
详解Vue中组件传值的多重实现方式
2019/08/16 Javascript
微信小程序本地存储实现每日签到、连续签到功能
2019/10/09 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
微信小程序canvas截取任意形状的实现代码
2020/01/13 Javascript
Vue Object 的变化侦测实现代码
2020/04/15 Javascript
Python2.x版本中maketrans()方法的使用介绍
2015/05/19 Python
使用Python AIML搭建聊天机器人的方法示例
2018/07/09 Python
Python 中字符串拼接的多种方法
2018/07/30 Python
Python判断变量名是否合法的方法示例
2019/01/28 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
2019/08/23 Python
Python 在OpenCV里实现仿射变换—坐标变换效果
2019/08/30 Python
pandas中ix的使用详细讲解
2020/03/09 Python
Python性能分析工具py-spy原理用法解析
2020/07/27 Python
同学会邀请书大全
2014/01/12 职场文书
高中生班主任评语
2014/04/25 职场文书
工会主席事迹材料
2014/06/03 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
导游词之阳朔遇龙河
2019/12/16 职场文书
python字符串的多行输出的实例详解
2021/06/08 Python
React + Threejs + Swiper 实现全景图效果的完整代码
2021/06/28 Javascript
2022新作动画《福星小子》释出宣传影片 加入内田真礼&宫野真守配音演出
2022/04/08 日漫