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 相关文章推荐
JQuery中getJSON的使用方法
Dec 13 Javascript
让你的博文自动带上缩址的实现代码,方便发到微博客上
Dec 28 Javascript
深入解读JavaScript中的Iterator和for-of循环
Jul 28 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
Aug 24 Javascript
Angularjs 实现一个幻灯片示例代码
Sep 08 Javascript
jquery插件canvaspercent.js实现百分比圆饼效果
Jul 18 jQuery
vue2导航根据路由传值,而改变导航内容的实例
Nov 10 Javascript
从零开始学习搭建React脚手架项目
Aug 23 Javascript
微信小程序搭建(mpvue+mpvue-weui+fly.js)的详细步骤
Sep 18 Javascript
Node.js 在本地生成日志文件的方法
Feb 07 Javascript
在vscode 中设置 vue模板内容的方法
Sep 02 Javascript
JS前端宏任务微任务及Event Loop使用详解
Jul 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
全国FM电台频率大全 - 11 浙江省
2020/03/11 无线电
PHP中的函数嵌套层数限制分析
2011/06/13 PHP
CodeIgniter读写分离实现方法详解
2016/01/20 PHP
php 读取文件夹下所有图片、文件的实例
2018/10/17 PHP
Js动态创建div
2008/09/25 Javascript
理解JavaScript的prototype属性
2012/02/11 Javascript
在jQuery中 关于json空对象筛选替换
2013/04/15 Javascript
extjs 分页使用jsp传递数据示例
2014/07/29 Javascript
jQuery基于muipicker实现仿ios时间选择
2016/02/22 Javascript
后端接收不到AngularJs中$http.post发送的数据原因分析及解决办法
2016/07/05 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
基于JavaScript实现全选、不选和反选效果
2017/02/15 Javascript
Javarscript中模块(module)、加载(load)与捆绑(bundle)详解
2017/05/28 Javascript
this在vue和小程序中的使用详解
2019/01/28 Javascript
django中使用vue.js的要点总结
2019/07/07 Javascript
Vue-CLI项目中路由传参的方式详解
2019/09/01 Javascript
如何实现iframe父子传参通信
2020/02/05 Javascript
jquery实现手风琴案例
2020/05/04 jQuery
python动态参数用法实例分析
2015/05/25 Python
Python 稀疏矩阵-sparse 存储和转换
2017/05/27 Python
Python正则表达式和元字符详解
2018/11/29 Python
解决tensorflow打印tensor有省略号的问题
2020/02/04 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
Python学习之路安装pycharm的教程详解
2020/06/17 Python
python画图时设置分辨率和画布大小的实现(plt.figure())
2021/01/08 Python
Electrolux伊莱克斯巴西商店:家用电器、小家电和配件
2018/05/23 全球购物
介绍一下OSI七层模型
2012/07/03 面试题
办公室驾驶员岗位职责
2013/11/15 职场文书
综合办公室个人的自我评价
2013/12/22 职场文书
高三政治教学反思
2014/02/06 职场文书
《我的第一本书》教学反思
2014/02/15 职场文书
学党史心得体会
2014/09/05 职场文书
道路交通事故赔偿协议书
2014/10/24 职场文书
有限公司股东合作协议书
2014/10/29 职场文书
校运会宣传稿大全
2015/07/23 职场文书
Java中的随机数Random
2022/03/17 Java/Android