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据option的value值快速设定初始的selected选项
Aug 13 Javascript
Extjs学习笔记之八 继承和事件基础
Jan 08 Javascript
jQuery学习2 选择器的使用说明
Feb 07 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
Sep 19 Javascript
js实现带按钮的上下滚动效果
May 12 Javascript
利用vue写todolist单页应用
Dec 15 Javascript
详解Javascript几种跨域方式总结
Feb 27 Javascript
Angular4实现动态添加删除表单输入框功能
Aug 11 Javascript
对于Javascript 执行上下文的全面了解
Sep 05 Javascript
javascript面向对象程序设计实践常用知识点总结
Jul 29 Javascript
vue实现微信浏览器左上角返回按钮拦截功能
Jan 18 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
Apr 04 jQuery
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
phpwind中的数据库操作类
2007/01/02 PHP
php使用Imagick生成图片的方法
2015/07/31 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
php设计模式之委托模式
2016/02/13 PHP
php设计模式之享元模式分析【星际争霸游戏案例】
2020/03/23 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
Ajax 数据请求的简单分析
2011/04/05 Javascript
使用简洁的jQuery方法实现隔行换色功能
2014/01/02 Javascript
js取float型小数点后两位数的方法
2014/01/18 Javascript
JS删除字符串中重复字符方法
2014/03/09 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
2014/10/16 Javascript
angularJS中$apply()方法详解
2015/01/07 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
2015/04/20 Javascript
js获取腾讯视频ID的方法
2016/10/03 Javascript
Javascript动画效果(2)
2016/10/11 Javascript
详解vee-validate的使用个人小结
2017/06/07 Javascript
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
Vue2.0 事件的广播与接收(观察者模式)
2018/03/14 Javascript
Python多进程机制实例详解
2015/07/02 Python
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
Python中index()和seek()的用法(详解)
2017/04/27 Python
Python中表达式x += y和x = x+y 的区别详解
2017/06/20 Python
Python进度条的制作代码实例
2019/08/31 Python
Python 字符串处理特殊空格\xc2\xa0\t\n Non-breaking space
2020/02/23 Python
Python标准库shutil模块使用方法解析
2020/03/10 Python
windows、linux下打包Python3程序详细方法
2020/03/17 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
工厂仓管员岗位职责
2014/01/01 职场文书
药店主任岗位责任制
2014/02/10 职场文书
高三毕业典礼演讲稿
2014/05/13 职场文书
求职信结尾怎么写
2014/05/26 职场文书
实习科室评语
2015/01/04 职场文书
实习护士自荐信
2015/03/25 职场文书
解决Maven项目中 Invalid bound statement 无效的绑定问题
2021/06/15 Java/Android
SQL注入篇学习之盲注/宽字节注入
2022/03/03 MySQL
Flutter集成高德地图并添加自定义Maker的实践
2022/04/07 Java/Android