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>

这是一个带有 javascript 实现的简单 html5 文件,您可以在其中简单地在画布上绘制。它适用于 Windows 7(我的旧笔记本电脑)上的所有浏览器。但是在 Windows 8(我的新笔记本电脑)上使用 Chrome 和 Firefox,你不能画任何东西,它不起作用!

Windows 7 上的绘图模式:

  • 铬:好的
  • 火狐:好的
  • 歌剧:好的
  • ie10:好的
  • 野生动物园:好的

Windows 8 上的绘图模式:

  • 铬:没有
  • 火狐:没有
  • 歌剧:好的
  • ie10:好的
  • 野生动物园:好的

有人可以请问题是什么吗?奇怪的是,DrawingMode 在 chrome 和 firefox 上不起作用,但在 Windows 8 下的 Opera、IE10 和 Safari 上运行良好。

4

2 回答 2

5

Fabric.js 认为您的 Chrome/Firefox 启用了触摸,因此它将自己附加到触摸事件而不是鼠标事件。

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

请参阅此https://github.com/kangax/fabric.js/issues/670以及此https://github.com/kangax/fabric.js/issues/450

于 2013-08-07T14:48:02.097 回答
1

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

于 2013-08-06T17:57:00.047 回答