从IE6到IE11上运行WebGL 3D遇到的各种坑

时间:2022-09-09 22:22:32

这篇《基于HTML5的电信网管3D机房监控应用》基于WebGL技术的应用让少同学对HTML5 3D的应用产生了兴趣和信心,但有不少网友私信询问WebGL如何运行在老的IE678910浏览器的问题,毕竟作为企业应用,用户的机器运行着各式各样的办公及业务系统,有PB/Delphi之类的老CS应用,有安装了dll和ActiveX的各种安全认证和视频监控的插件,有装着flash或svg插件的flex和SVG应用,当然还有支持IE6却不支持任何非IE浏览器的各种OA办公软件,眼看着XP操作系统即将寿终正寝,结果还成了国内各家安全公司的新商机《围猎XP:谁在瞄准商机》,你说升级机器系统谈何容易?

从IE6到IE11上运行WebGL 3D遇到的各种坑

对于我们无力要求升级的IE678910上要跑WebGL,我们只能采用Google Chrome Frame的解决方案,虽然该插件Google从2014年1月份起就不再维护更新了,但已经发布的版本也是31了,这个版本的WebGL功能已经足够完善了,当然这样的解决方案也一箭双雕的解决了2D的Canvas问题。

安装完该插件后,在你需要采用WebGL的页面增加一行<meta http-equiv=”X-UA-Compatible” content=”chrome=1″>代码即可,或者从服务器下发该页面是对HTTP头增加X-UA-Compatible: chrome=1的参数即可。

使用Google Chrome Frame还需要注意一下几点:

可采用嵌入OBJECT元素的解决方案,绕开Google Chrome Frame不支持iframe的问题

<OBJECT ID="ChromeFrame" WIDTH=500 HEIGHT=500 CODEBASE="http://www.google.com"
CLASSID="CLSID:E0A900DF-9611-4446-86BD-4B1D47E7DB2A">
<PARAM NAME="src" VALUE="http://www.google.com">
<embed ID="ChromeFramePlugin" WIDTH=500 HEIGHT=500 NAME="ChromeFrame"
SRC="http://www.google.com" TYPE="application/chromeframe">
</embed>
</OBJECT>

以上是我使用Google Chrome Frame解决老IE浏览器遇到的一些坑的解决方案,如果你还遇到其他问题可参考Google Chrome FrameDeveloper Guide 和Troubleshooting 。

还好,我们遇到的不少项目还是允许购买新机器或者升级新浏览器系统的,但这并不以为这能上IE11就问题结束了,微软这哥们对新标准的支持要嘛落后半拍,要嘛明知标准就这样我TMD的就不实现你能咋地,相信preserve-3d的CSS3功能让多少人欣喜诺狂,的确如果CSS3的3D功能各家浏览器能好好实现很多应用也就没WebGL啥事了,例如著名的famo.us的经典元素周期表例子,尼玛的IE使用者就无福享受,看看以下MS人的话,我知道preserve-3d是w3c标准,老子就不实现,想用的自己搞蹩脚的解决方案绕道:

http://msdn.microsoft.com/en-us/library/ie/hh673529(v=vs.85).aspx
Note The W3C specification defines a keyword value of preserve-3d for this property, which indicates that flattening is not performed. At this time, Internet Explorer 10 does not support the preserve-3d keyword. You can work around this by manually applying the parent element’s transform to each of the child elements in addition to the child element’s normal transform.

从IE6到IE11上运行WebGL 3D遇到的各种坑

CSS3的问题下回再扯淡,那是个无穷无尽的话题,回到我们的号称支持WebGL的IE11,至从一年前有人泄露IE11将支持WebGL就引得业界一片兴奋,千呼万唤始出来后居然还有那么多缺陷,但终归还是大好事,迈出第一步是最难的,相信微软会慢慢完善,但毕竟活在当下的我们还得继续填Shading Language上的几个坑:

1、lineWidth不让设置,只支持1个像素的连线,只能用一个像素将就着,或者把线采用构建模型的重方式来替代

2、Stencil buffers还不支持,clearStencil之类的函数就不要考虑用了

3、TRIANGLE_FAN类型不支持,这个还好办,改用TRIANGLES替代顶多增加点顶点数据

4、不支持return语句,你妹的这个问题让我苦苦找了半天才发现,只能改变代码逻辑不用return的方式

目前我遇到的就这些坑了,有摔倒在其他坑的同学可以继续补充,采用threejsbabylonjsHightopoHT for Web等3D引擎封装的框架自然都会帮我们应用层屏蔽这些坑,但相信很多引擎并还未对IE11做考虑,毕竟这哥们市场占有率还不高,等足够高了值得考虑时也许微软自己已经填补好了坑,无需我们再操心了,但已微软发布新浏览器版本的节奏,我只能说我们有生之年肯定等得到。

从IE6到IE11上运行WebGL 3D遇到的各种坑

从IE6到IE11上运行WebGL 3D遇到的各种坑的更多相关文章

  1. 突袭HTML5之WebGL 3D概述

    WebGL开启了网页3D渲染的新时代,它允许在canvas中直接渲染3D的内容,而不借助任何插件.WebGL同canvas 2D的API一样,都是通过脚本操纵对象,所以步骤也是基本相似:准备工作上下文 ...

  2. 透过WebGL 3D看动画Easing函数本质

    50年前的这个月诞生了BASIC这门计算机语言,回想起自己喜欢上图形界面这行,还得归功于当年在win98下用QBASIC照葫芦画瓢敲了一段绘制奥运五环的代码,当带色彩的奥运五环呈现在自己面前时我已知道 ...

  3. &lbrack;整理&rsqb;IE11中的WebGL探秘:渲染速度超Chrome

    http://www.csdn.net/article/2013-12-19/2817854-IE11-WebGL-and-more 摘要:IE11开始支持WebGL,并且效果非常好,IE11的Web ...

  4. HTML5定稿了,终于有一种编程语言开发的程序可以在Android和IOS两种设备上运行了

    2007 年 W3C (万维网联盟)立项 HTML5,直至 2014 年 10 月底,这个长达八年的规范终于正式封稿. 过去这些年,HTML5 颠覆了 PC 互联网的格局,优化了移动互联网的体验,接下 ...

  5. 基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(二)

    我们上一篇<基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)>主要讲解了如何搭建一个实时数据通讯服务器,客户端与服务端是如何通讯的,相信通过上一篇的讲解,再配 ...

  6. 基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)

    今天没有延续上一篇讲的内容,穿插一段小插曲,WebSocket 实时数据通讯同步的问题,今天我们并不是很纯粹地讲 WebSocket 相关知识,我们通过 WebGL 3D 拓扑图来呈现一个有趣的 De ...

  7. 通过 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(二)

    我们上一篇<基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)>主要讲解了如何搭建一个实时数据通讯服务器,客户端与服务端是如何通讯的,相信通过上一篇的讲解,再配 ...

  8. 使用 VirtualBox 虚拟机在电脑上运行 Android 4&period;0 系统,让电脑瞬间变安卓平板

    Ref: http://www.iplaysoft.com/android-v4-ics-for-virtualbox.html 随着 Android 手机的各种软件应用越来越多,很多没有购买的朋友都 ...

  9. 分享收集的WebGL 3D学习资源

    大家好,我在本文中分享了我收集的WebGL 3D相关的博客.书籍.教程.demo等内容,希望对大家学习WebGL和3D有所帮助,谢谢- 相关博客 Wonder技术 Wonder是我们的产品,包含Web ...

随机推荐

  1. tsql语句分析工具 转

    一款好用且免费的语句分析工具 在调优过程中的查询语句优化阶段,分析语句的执行计划是必经之路,一款好的执行计划分析工具确实可以帮助我们事半功倍 一款名为“Plan Explorer“,自己用的挺爽,不私 ...

  2. phpcms响应式布局导航条

  3. C&num;中静态与非静态方法比较

    C#静态方法与非静态方法的区别不仅仅是概念上的,那么他们有什么具体的区别呢?让我们通过本文向你做一下解析. C#的类中可以包含两种方法:C#静态方法与非静态方法.那么他们的定义有什么不同呢?他们在使用 ...

  4. SqlServer数据文件增长也很快,到底是哪些表增长造成的呢?

    查询数据库中所有表的大小,哪些表的数据量较大 create table #t (name ), rows ), data ), index_size ), unused )) exec sp_MSfo ...

  5. ShoneSharp语言&lpar;S&num;&rpar;的设计和使用介绍系列(4)— 入门概述

    ShoneSharp语言(S#)的设计和使用介绍 系列(4)- 入门概述 作者:Shone 声明:原创文章欢迎转载,但请注明出处,https://www.cnblogs.com/ShoneSharp. ...

  6. HttpServletRequest获取URL?后面的内容

    获取URL?后面的内容 如https://i.cnblogs.com/EditPosts.aspx?opt=1 String para = request.getQueryString(): para ...

  7. Button的几种常用的xml背景,扁平化,下划线,边框包裹,以及按压效果

    Button的几种常用的xml背景,扁平化,下划线,边框包裹,以及按压效果 分享下我项目中用到的几种Button的效果,说实话,还真挺好看的 一.标准圆角 效果是这样的 他的实现很简单,我们只需要两个 ...

  8. 【干货分享】可能是东半球最全的&period;NET Core跨平台微服务学习资源

    如果你发现还有西半球的资源,烦请相告,不胜感谢! 一..NET Core基础 微软英文官网 .NET Core 微软中文官网 GitHub 用ASP.NET内核和Azure构建现代Web应用程序 博客 ...

  9. 饮冰三年-人工智能-Python-20 Python线程、进程、线程

    进程:最小的数据单元 线程:最小的执行单元 一: 1:线程1 import threading #线程 import time def Music(): print("Listen Musi ...

  10. mysql5&period;7 的 user表的密码字段从 password 变成了 authentication&lowbar;string

    来源: http://www.zhimengzhe.com/shujuku/other/267631.html 感觉还是挺坑的 自己没了解清楚 就动手 转帖一下 mark 一下. 1.首先停止正在运行 ...