`

对于html5 canvas 支持ie的一些方法

 
阅读更多

【转】http://bbs.csdn.net/topics/370103016

 

Canvas是HTML5新增加的元素, 可以方便的画图. Firefox, safari, chrome, opera的最近版本以及IE9都支持. IE8及以下不支持HTML5, 但是ExplorerCanvas库(http://excanvas.sourceforge.net/)调用IE内部功能提供了几乎相同的API. ExplorerCanvas不支持字体, 所以为了使用文字, 还需要使用canvas-text库(http://code.google.com/p/canvas-text/).

使用ExplorerCanvas及canvas-text, 需要在HTML header里包括: 
  <script type="text/javascript" src="javascript/excanvas/excanvas.js"></script>
  <script type="text/javascript" src="javascript/excanvas/canvas.text.js"></script>
  <script type="text/javascript" src="javascript/excanvas/faces/optimer-normal-normal.js"></script>

如果同一页HTML要兼容低版本IE和其它支持HTML5的浏览器, 可以用如下的语法选择性加入低版本IE需要的部分: 
  <!--[if IE]>
  <script type="text/javascript" src="javascript/excanvas/excanvas.js"></script>
  <script type="text/javascript" src="javascript/excanvas/canvas.text.js"></script>
  <script type="text/javascript" src="javascript/excanvas/faces/optimer-normal-normal.js"></script>
  <![endif]--> 

下面的部分包括在HTML的BODY里, canvas元素的后面:
  <!--[if ! IE]>--> <script type="text/javascript" src="javascript/mycode.js"></script> <!--<![endif]-->
  <!--[if IE]> <script type="text/javascript" src="javascript/mycode.ie.js"></script> <![endif]-->

下面是mycode.ie.js不同于mycode.js的部分. 

1. addEventListener -> attachEvent
别的浏览器用addEventListener. IE用attachEvent. 对于事件名, IE要多加一个"on". 比如IE用"onmousedown", 别的浏览器用"mousedown". 

2. 为了兼容手机, 鼠标事件为触屏事件取代, 所以mousedown/mouseup/mousemove改用如下的事件: touchstart/touchend/touchmove.

3. event.pageX -> pageX(event)
别的浏览器直接用event.pageX. IE完全不同, 所以另外自定义一个函数pageX(event)来达到相同效果:
function pageX(e) {
  if (e.pageX) return e.pageX;
  else if (e.clientX)
  return e.clientX + (document.documentElement.scrollLeft ?
  document.documentElement.scrollLeft : document.body.scrollLeft);
  else return null;
}

4. in event handlers, this.offsetLeft/Top -> vCanvas.offsetLeft/Top
别的浏览器this指代事件发生的元素, 这里是canvas. IE的this指代window, 所以要专门指明vCanvas.offsetLeft/Top.

5. onmouseout在IE里行为不稳定, 所以应避免使用, 或者改用onmouseleave.

6. 辨认鼠标的左右键, 别的浏览器用event.which, IE用event.button.

7. DIV元素的半透明效果,别的浏览器用 style="background-color:rgba(255,255,255,0.75);", IE用style="background-color: white; opacity:0.75;filter:alpha(opacity=75);" 

8. 定义元素高度和宽度时,IE常要指明单位px,别的浏览器不用. 比如:
    <!--[if ! IE]>--> 
    <table id="Toolbar" border="0" cellpadding="2" cellspacing="0" bgcolor="#ffffff" style="font-size:12px; width:320;">
    <!--<![endif]-->

    <!--[if IE]> 
    <table id="Toolbar" border="0" cellpadding="2" cellspacing="0" bgcolor="#ffffff" style="font-size:12px; width:320px;">
    <![endif]-->

9. 另外IE引擎慢一些, 所以别的浏览器里运行流畅的canvas事件, 在IE里要简略一些来保证运行速度.

分享到:
评论

相关推荐

    让IE兼容 HTML5的canvas标签

    值得注意的是,尽管excanvas提供了对老版IE的canvas支持,但它无法实现所有HTML5 canvas的特性,尤其是那些依赖硬件加速的高级功能。此外,随着现代浏览器的普及,对于不再维护的旧版IE,开发者可能更倾向于引导用户...

    让canvas支持低版本IE

    然而,对于老版本的Internet Explorer(如IE6、IE7和IE8),它们并不支持Canvas API,这使得在这些浏览器上实现Canvas功能变得极具挑战性。本文将详细介绍如何通过各种技术和解决方案,使Canvas在低版本的IE中得以...

    用于各个浏览器(IE)html2canvas不工作解决方案

    用于各个浏览器(IE)html2canvas不工作解决方案 html2canvas在火狐、Chrome等浏览器好用,但是IE浏览器无效,导入这个js后就OK啦

    canvas.js html5.js 兼容ie

    和"excanvas.compiled.js")都是为了提升老旧浏览器对HTML5 Canvas的支持,特别是对于Internet Explorer。在实际开发中,结合使用这些库,开发者可以编写一次代码,无需担心因浏览器兼容性问题而产生的额外工作,从而...

    html2canvas属性和使用方法以及如何使用html2canvas将HTML内容写入Canvas生成图片

    html2canvas支持各种浏览器,包括Firefox 3.5+、Google Chrome、Opera的更新版本以及IE9以上的浏览器。 在使用html2canvas之前,先了解一下其基本属性和使用方法是十分必要的。html2canvas接受一个HTML元素作为参数...

    HTML5 CanvasAPI

    在Canvas元素出现之前,开发人员若要在浏览器中进行绘图,只能依赖于Adobe的Flash插件、SVG和IE支持的VML等技术。这些技术要么需要额外插件,要么只限于特定浏览器,都不如Canvas API来得通用和便捷。HTML5的Canvas...

    canvas--IE8.zip

    这表明除了基础的canvas支持之外,可能还包含了在IE8中生成和显示二维码的解决方案。二维码是一种二维条形码,常用于存储网址、文本信息等,便于移动设备快速读取。在HTML5中,虽然没有内置的二维码生成器,但开发者...

    图片倒影,基于HTML5 Canvas,支持IE.zip

    这个名为"图片倒影,基于HTML5 Canvas,支持IE.zip"的项目,显然是一个利用HTML5技术,特别是Canvas元素,来实现图片倒影效果的实例。Canvas是HTML5中的一个核心组件,它允许开发者在网页上进行动态图形绘制,提供了...

    HTML5 Canvas, flash version

    然而,由于其对浏览器版本的依赖(特别是对IE9以下版本的支持不足)和移动设备上的兼容性问题,逐渐被HTML5技术所取代。Canvas就是HTML5中为替代Flash而出现的重要特性之一。 FlashCanvas是一个JavaScript库,它的...

    360度全景图-HTML5 Canvas实现/支持chrome/FF/IE9+

    例如,可能使用了`Modernizr`库来检测浏览器特性,或者手动引入`ExplorerCanvas`来为IE9提供Canvas支持。 在实际应用中,360度全景图常用于房地产、旅游、室内设计等领域,让用户能从任意角度查看环境。此外,通过...

    ie下的canvas兼容显示

    6. **检测Canvas支持**:在代码中检测浏览器是否支持Canvas,然后根据结果选择不同的渲染方式。例如,使用`window.HTMLCanvasElement`或`document.createElement('canvas').getContext('2d')`进行检测。 7. **利用...

    ie-canvas.zip解决了ie8不支持canvas

    VML是微软在IE5中引入的一种矢量图形标准,而SVG是一种W3C推荐的开放标准,用于创建和显示矢量图形。这两种技术在IE8中都是支持的,因此,`ie-canvas`库通过这些技术来实现Canvas API的兼容性。 在实际使用中,...

    商品展示 360度全景图-HTML5 Canvas 实现

    例如,对于不支持Canvas的旧版IE浏览器,可能需要借助于Flash或其他兼容技术来实现类似的功能。但根据描述,这个项目已经确认支持Chrome、Firefox和IE9及以上版本,这意味着它已经针对这些主流浏览器进行了优化。 ...

    vue 使用 html2canvas 截屏并下载图片至本地(重点兼容ie浏览器)

    然而,IE浏览器不支持`toDataURL`方法,所以需要额外的处理。一种解决方法是使用`html2canvas`的`onrendered`回调,结合`canvas.toBlob`和`URL.createObjectURL`。修改后的截屏函数如下: ```javascript methods: {...

    让ie6,7,8支持canvas,css3等主流html5技术

    标题中的“让ie6,7,8支持canvas,css3等主流html5技术”涉及到的是在旧版Internet Explorer(IE6、IE7、IE8)上实现HTML5新特性的兼容性问题。这些浏览器并不原生支持HTML5的新功能,如Canvas画布和CSS3,但可以通过...

    根据DOM将html转为canvas图片格式

    对于不支持Canvas或base64编码的老版本浏览器,可能需要寻找替代方案,如Flash或服务端处理。 6. 实现流程: - 首先,加载HTML2Canvas库。 - 然后,通过JavaScript选择需要转换的HTML元素。 - 调用HTML2Canvas的...

    解决htmlcanvas手机无法截图或者截图不全的问题

    HTMLCanvas元素是HTML5引入的一个强大特性,它允许我们在网页上进行动态图形绘制,而html2canvas库则是基于这个特性实现的一个JavaScript库,用于将HTML元素转换为Canvas图像,进而可以将其导出为图片,例如JPEG、...

    IE6支持HTML5

    6. **图形和Canvas**: IE6不支持HTML5的Canvas元素,可以考虑使用VML(Vector Markup Language)作为替代,或者利用ExplorerCanvas库,它使用VML在IE6下模拟Canvas。 7. **SVG支持**: 对于IE6的SVG支持,可以使用...

    ie9以下老浏览器不支持HTML5的解决方法

    ### ie9以下老浏览器不支持HTML5的解决方法 在Web开发领域,兼容性问题一直是个头疼的问题,尤其是在处理老旧浏览器如Internet Explorer(IE)时。对于那些使用IE9及以下版本的老用户来说,由于这些浏览器对HTML5的...

    html2canvas最新版本git下载的

    包含的有:html2canvas.js html2canvas.mini.js,版本号是v1.0.0-alpha.12,。简洁:著作权归作者所有。...以下浏览器能够很好的支持该脚本:Firefox 3.5+, Google Chrome, Opera新的版本, IE9以上的浏览器。

Global site tag (gtag.js) - Google Analytics