使用Canvas的HTML5 / JavaScript文件不能在Windows 8上使用Chrome和Firefox,但可以在Windows 7上使用所有浏览器。为什么?

我有这个简单的html5文件的问题:

var canvas = window.__canvas = new fabric.Canvas('c'); canvas.backgroundColor = '#efefef'; canvas.freeDrawingBrush.width = 10; canvas.renderAll(); document.getElementById('drawingMode').addEventListener('click', function(e) { e.target.innerHTML = canvas.isDrawingMode ? 'Start freedrawing' : 'End freedrawing'; canvas.isDrawingMode = !canvas.isDrawingMode; }); 
 canvas { border: 1px solid #ccc; padding: 20px; } /*.canvas-class { border-left: 20px solid black; padding: 20px; }*/ 
 <button id="drawingMode">Start freedrawing</button> <div class="wrapper"> <canvas id="c" class="canvas-class" width="400" height="300" style="border:1px solid #ccc;"></canvas> </div> 

这是一个简单的HTML5文件与JavaScript实现,你可以简单地画在canvas上。 它适用于Windows 7(我的旧笔记本电脑)上的所有浏览器。 但是,在Windows 8(我的新笔记本电脑)上的Chrome和Firefox,你不能画任何东西,这是行不通的!

在Windows 7上的绘图模式:

  • 铬:好的
  • firefox:好的
  • 歌剧:好的
  • ie10:好的
  • safari:好的

Windows 8上的绘图模式:

  • 铬:
  • firefox: NO
  • 歌剧:好的
  • ie10:好的
  • safari:好的

有人可以请问是什么问题? 奇怪的是,DrawingMode不适用于Chrome和Firefox,但在Opera 8,IE10和Safari 8下运行良好。

Fabric.js认为你的Chrome / Firefox启用了触摸功能,因此它可以自己触摸事件而不是鼠标事件。

我不太清楚这是Chrome / Firefox中的错误,还是两者兼而有之。

看到这个https://github.com/kangax/fabric.js/issues/670和这个https://github.com/kangax/fabric.js/issues/450

我假设你的Windows 7笔记本电脑没有触摸。 这意味着所有浏览器都必须捕获鼠标/触摸板事件。 但是,如果您使用的是Windows 8触控笔记本电脑,则浏览器可能有不同的输入源(例如触摸板或触摸屏)。 不同的浏览器可能会使用不同的处理每个输入的实现,导致您所看到的这种差异。