简体   繁体   English

在canvas Fabric.js上模拟mousedown事件

[英]Simulate mousedown event on canvas Fabric.js

I got a basic setup here to test for mouse down on Fabric.js canvas and I am trying to manually trigger a mouse event via javascript (not via mouse click) to simulate a click on the canvas. 我在这里有一个基本的设置来测试Fabric.js画布上的鼠标,我试图通过javascript(不是通过鼠标点击)手动触发鼠标事件来模拟画布上的点击。

HTML HTML

<canvas id="c"></canvas>
<a id="testClick" href="javascript:void(0)">Test</a>

Javascript 使用Javascript

var canvas = new fabric.Canvas("c");

$("#testClick").click(function() {
   var e = jQuery.Event("mousedown", {
     pageX: 700,
     pageY: 300
   });
   $('#c').trigger(e);
});

canvas.on({"mouse:down": function() {
   alert("you clicked me");
}});

So far there is nothing that enables me to simulate this, help appreciated. 到目前为止,没有任何东西可以让我模拟这个,帮助赞赏。

var canvas variable has to be part of jQuery definition. var canvas变量必须是jQuery定义的一部分。 But I see it's is part of fabric. 但我发现它是织物的一部分。 Therefore .trigger() cannot be used on that definition. 因此.trigger()不能用于该定义。

.trigger() is jQuery framework therefore it could be used on jquery selected element$. .trigger()是jQuery框架,因此它可以用于jquery选中的元素$。

UPDATE UPDATE

https://jsfiddle.net/zo98p72L/14/ https://jsfiddle.net/zo98p72L/14/

Since this has been voted up 2 times - I decided to post this. 由于这已经被投了2次 - 我决定发布这个。

You can fire the events directly on the Fabric canvas object, passing arguments as a second parameter: 您可以直接在Fabric画布对象上触发事件,将参数作为第二个参数传递:

var fCanvas = new fabric.Canvas("c");

fCanvas.on("mouse:down", function(e) {
  alert("you clicked me here ("+e.pageX+","+e.pageY+")");
});

fCanvas.trigger("mouse:down", {
    pageX: 700,
    pageY: 400
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM