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 相关文章推荐
JavaScript中valueOf函数与toString方法深入理解
Dec 02 Javascript
滚动图片效果 jquery实现回旋滚动效果
Jan 08 Javascript
扩展IE中一些不兼容的方法如contains、startWith等等
Jan 09 Javascript
JS实现很酷的水波文字特效实例
Feb 26 Javascript
js实现延迟加载的方法
Jun 24 Javascript
jQuery ajax分页插件实例代码
Jan 27 Javascript
JS实现简单的右下角弹出提示窗口完整实例
Jun 21 Javascript
jquery uploadify如何取消已上传成功文件
Feb 08 Javascript
使用Bootstrap + Vue.js实现表格的动态展示、新增和删除功能
Nov 27 Javascript
小程序数据通信方法大全(推荐)
Apr 15 Javascript
vue element table中自定义一些input的验证操作
Jul 18 Javascript
利用js实现简单开关灯代码
Nov 23 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
YII Framework框架教程之安全方案详解
2016/03/14 PHP
PHP创建XML接口示例
2019/07/04 PHP
深入学习微信网址链接解封的防封原理visit_type
2019/08/15 PHP
对laravel的session获取与存取方法详解
2019/10/08 PHP
laravel框架创建授权策略实例分析
2019/11/22 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
用js来解决ajax读取页面乱码
2010/11/28 Javascript
angularjs基础教程
2014/12/25 Javascript
JS动态修改iframe内嵌网页地址的方法
2015/04/01 Javascript
详细分析使用AngularJS编程中提交表单的方式
2015/06/19 Javascript
更高效的使用JQuery 这里总结了8个小技巧
2016/04/13 Javascript
Javascript中常见的逻辑题和解决方法
2016/09/17 Javascript
jstree的简单实例
2016/12/01 Javascript
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
vue props传值失败 输出undefined的解决方法
2018/09/11 Javascript
Windows下Node爬虫神器Puppeteer安装记
2019/01/09 Javascript
VScode格式化ESlint方法(最全最好用方法)
2019/09/10 Javascript
[39:53]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第一场 11.19
2020/11/19 DOTA
python语言使用技巧分享
2016/05/31 Python
Python设计模式之代理模式简单示例
2018/01/09 Python
10 行 Python 代码教你自动发送短信(不想回复工作邮件妙招)
2018/10/11 Python
Python中对数组集进行按行打乱shuffle的方法
2018/11/08 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
2020/06/29 Python
使用Python pip怎么升级pip
2020/08/11 Python
python Pexpect模块的使用
2020/12/25 Python
基于PyTorch中view的用法说明
2021/03/03 Python
韩都衣舍天猫官方旗舰店:天猫女装销售总冠军
2017/10/10 全球购物
Sahajan美国:阿育吠陀护肤品牌
2021/01/09 全球购物
介绍下Java中==和equals的区别
2013/09/01 面试题
英文版银行求职信
2013/10/09 职场文书
高校十八大报告感想
2014/01/27 职场文书
汉语言文学毕业生自荐信范文
2014/03/24 职场文书
建筑工程专业大学生求职信
2014/04/23 职场文书
2015年司机工作总结
2015/04/23 职场文书