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 相关文章推荐
图片动画横条广告带上下滚动的JS代码
Oct 25 Javascript
使用js判断数组中是否包含某一元素(类似于php中的in_array())
Dec 12 Javascript
javascript实现存储hmtl字符串示例
Apr 25 Javascript
javascript解析json数据的3种方式
May 08 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
Dec 08 Javascript
纯javascript实现自动发送邮件
Oct 21 Javascript
关于JSON.parse(),JSON.stringify(),jQuery.parseJSON()的用法
Jun 30 Javascript
读Javascript高性能编程重点笔记
Dec 21 Javascript
jquery请求servlet实现ajax异步请求的示例
Jun 03 jQuery
JavaScript中toLocaleString()和toString()的区别实例分析
Aug 14 Javascript
JS动态图片的实现方法完整示例
Jan 13 Javascript
vue项目前端微信JSAPI与外部H5支付相关实现过程及常见问题
Apr 14 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
ThinkPHP实现批量删除数据的代码实例
2014/07/02 PHP
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
Yii2验证器(Validator)用法分析
2016/07/23 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
2021/03/09 PHP
JQuery自定义事件的应用 JQuery最佳实践
2010/08/01 Javascript
JS通过分析userAgent属性来判断浏览器的类型及版本
2014/03/28 Javascript
使用jquery 简单实现下拉菜单
2015/01/14 Javascript
js实现网页右上角滑出会自动消失大幅广告的方法
2015/02/27 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
2015/03/02 Javascript
JavaScript 事件入门知识
2015/04/13 Javascript
jQuery验证插件validate使用方法详解
2020/09/13 Javascript
js匿名函数作为函数参数详解
2016/06/01 Javascript
javascript js 操作数组 增删改查的简单实现
2016/06/20 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
vue日期组件 支持vue1.0和2.0
2017/01/09 Javascript
vuejs指令详解
2017/02/07 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
input file样式修改以及图片预览删除功能详细概括(推荐)
2017/08/17 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
node使用promise替代回调函数
2018/05/07 Javascript
vue动态添加路由addRoutes之不能将动态路由存入缓存的解决
2019/02/19 Javascript
详解微信小程序-扫一扫 wx.scanCode() 扫码大变身
2019/04/30 Javascript
js实现点赞效果
2020/03/16 Javascript
Python 爬虫爬取指定博客的所有文章
2016/02/17 Python
python and or用法详解
2019/06/26 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
承认错误的检讨书
2014/01/30 职场文书
纪律教育学习心得体会
2014/09/02 职场文书
导游词欢迎词
2015/02/02 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
2021-4-3课程——SQL Server查询【2】
2021/04/05 SQL Server
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
Log4j.properties配置及其使用
2021/08/02 Java/Android
Redis+Lua脚本实现计数器接口防刷功能(升级版)
2022/02/12 Redis
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL