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 相关文章推荐
一个无限级XML绑定跨框架菜单(For IE)
Jan 27 Javascript
javascript 变量作用域 代码分析
Jun 26 Javascript
jQuery LigerUI 插件介绍及使用之ligerDrag和ligerResizable示例代码打包
Apr 06 Javascript
能说明你的Javascript技术很烂的五个原因分析
Oct 28 Javascript
如何使用Javascript获取距今n天前的日期
Jul 08 Javascript
js 将json字符串转换为json对象的方法解析
Nov 13 Javascript
js自定义瀑布流布局插件
May 16 Javascript
Angular5中调用第三方js插件的方法
Feb 26 Javascript
利用d3.js力导布局绘制资源拓扑图实例教程
Jan 08 Javascript
微信小程序实现下滑到底部自动翻页功能
Mar 07 Javascript
js实现验证码干扰(静态)
Feb 22 Javascript
一道JS算法面试题——冒泡、选择排序
Apr 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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
php设计模式 Template (模板模式)
2011/06/26 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
php设置静态内容缓存时间的方法
2014/12/01 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
PHP crypt()函数的用法讲解
2019/02/15 PHP
jQuery.get、jQuery.getJSON、jQuery.post无法返回JSON问题的解决方法
2011/07/28 Javascript
基于jQuery的投票系统显示结果插件
2011/08/12 Javascript
JS图片切换的具体方法(带缩略图版)
2013/11/12 Javascript
javacript使用break内层跳出外层循环分析
2015/01/12 Javascript
JS的框架Polymer中的dom-if和is属性使用说明
2015/07/29 Javascript
jQuery Mobile动态刷新页面样式的实现方法
2016/05/28 Javascript
JavaScript 限制文本框不可输入英文单双引号的方法
2016/12/20 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
node.js将MongoDB数据同步到MySQL的步骤
2017/12/10 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
Vue.js实现开发购物车功能的方法详解
2019/02/22 Javascript
vue如何实现自定义底部菜单栏
2019/07/01 Javascript
js对象简介与基本用法示例
2020/03/13 Javascript
vue下载二进制流图片操作
2020/10/26 Javascript
Nuxt 项目性能优化调研分析
2020/11/07 Javascript
[08:06]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Elephant 选手采访
2021/03/11 DOTA
python flask中静态文件的管理方法
2018/03/20 Python
对Python中plt的画图函数详解
2018/11/07 Python
Python-while 计算100以内奇数和的方法
2019/06/11 Python
CSS3教程(9):设置RGB颜色
2009/04/02 HTML / CSS
利用css3如何设置没有上下边的列表间隔线
2017/07/03 HTML / CSS
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
纪念建党演讲稿范文
2014/01/13 职场文书
硕士研究生就业推荐信
2014/05/18 职场文书
省级优秀班集体申报材料
2014/05/25 职场文书
长城英文导游词
2015/01/30 职场文书
语文教师求职信范文
2015/03/20 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
css3实现的加载动画效果
2021/04/07 HTML / CSS
Mybatis是这样防止sql注入的
2021/12/06 Java/Android