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 相关文章推荐
根据json字符串生成Html的一种方式
Jan 09 Javascript
让ie6也支持websocket采用flash封装实现
Feb 18 Javascript
浅谈Javascript中的Function与Object
Jan 26 Javascript
推荐阅读的js快速判断IE浏览器(兼容IE10与IE11)
Dec 13 Javascript
基于jQuery实现左右图片轮播(原理通用)
Dec 24 Javascript
jQuery Easyui实现左右布局
Jan 26 Javascript
angular框架实现全选与单选chekbox的自定义
Jul 06 Javascript
JS自定义滚动条效果简单实现代码
Oct 27 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
Dec 26 Javascript
Flutter 超实用简单菜单弹出框 PopupMenuButton功能
Aug 06 Javascript
Node.js API详解之 tty功能与用法实例分析
Apr 27 Javascript
vue接口请求加密实例
Aug 11 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
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
PHP实现数据分页显示的简单实例
2016/05/26 PHP
javascript 通用简单的table选项卡实现
2010/05/07 Javascript
JS在TextArea光标位置插入文字并实现移动光标到文字末尾
2013/06/21 Javascript
在JavaScript里防止事件函数高频触发和高频调用的方法
2014/09/06 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
2015/03/25 Javascript
jQuery实现不断闪烁文字的方法
2015/05/15 Javascript
jQuery手机拨号界面特效代码分享
2015/08/27 Javascript
浅谈Javascript中substr和substring的区别
2015/09/30 Javascript
简单实现jQuery弹窗效果
2017/10/30 jQuery
浅谈ajax在jquery中的请求和servlet中的响应
2018/01/22 jQuery
深入浅出理解JavaScript高级定时器原理与用法
2018/08/02 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
如何在微信小程序里面退出小程序的方法
2019/04/28 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
javascript自定义右键菜单插件
2019/12/16 Javascript
JS几个常用的函数和对象定义与用法示例
2020/01/15 Javascript
详解JavaScript匿名函数和闭包
2020/07/10 Javascript
[01:07:15]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第二场 1月25日
2021/03/11 DOTA
低版本中Python除法运算小技巧
2015/04/05 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
python基于SMTP协议发送邮件
2019/05/31 Python
python实现将视频按帧读取到自定义目录
2019/12/10 Python
Python多进程multiprocessing、进程池用法实例分析
2020/03/24 Python
python对输出的奇数偶数排序实例代码
2020/12/04 Python
基于Python的接口自动化unittest测试框架和ddt数据驱动详解
2021/01/27 Python
CSS3 重置iphone浏览器按钮input,select等表单元素的默认样式
2014/10/11 HTML / CSS
Final类有什么特点
2012/04/25 面试题
医学毕业生自我鉴定
2013/10/30 职场文书
低碳环保倡议书
2014/04/14 职场文书
医学生求职自荐书
2014/06/12 职场文书
大学生村官个人总结
2015/02/15 职场文书
2016年学习贯彻十八届五中全会精神心得体会
2016/01/05 职场文书
启迪人心的励志语录:脾气永远不要大于本事
2020/01/02 职场文书
JS实现数组去重的11种方法总结
2022/04/04 Javascript
docker compose 部署 golang 的 Athens 私有代理问题
2022/04/28 Servers