javascript - 有没有一种方法可以单击 Canvas 中的特定点/元素(使用 javascript、jquery 或 selenium)

标签 javascript jquery html selenium canvas

如何在 Canvas 的特定位置应用点击? (使用坐标对我来说似乎是最合乎逻辑的,但找不到任何方法,欢迎任何其他想法)。请注意,我无权访问创建 Canvas 的代码。

编辑:一些澄清, Canvas 有多个正在绘制的元素,我无法使用 jquery 选择但需要单击它们。我可以手动找到它们的坐标并进行一些计算,但每次我尝试将单击或鼠标事件传递到该位置时都不会被视为真正的鼠标单击(应该单击的按钮不是)。

最佳答案

试试怎么样

canvas.on('click', function(e) {

    // calculate x y coordinates on canvas
    var x = e.pageX - $(this).offset().left,
    y = e.pageY - $(this).offset().top;

    // implement collision detection via the coordinates the element you want to click (assuming you know where it is)
    if (y > <elementY> && y < <elementY> + <elementHeight>
        && x > <elementX> && x < <elementX> + <elementWidth>) {
        alert('found it');
    }
});

我没有时间测试那个片段。如果您知道 Canvas 中元素的 x 和 y 坐标,该代码可能就可以解决问题。

我尝试用该片段做的是通过 elmentYelementY + elementHeight 以及 elementX元素X + 元素宽度。如果您知道所有这些值,您可以简单地检查您的点击事件的 xy 值是否落在上述框中。

编辑

如果要在某个位置触发点击事件,需要预先定义clickEvent,并设置pageX和pageY属性。

var e = new jQuery.Event("click");
e.pageX = 10;
e.pageY = 10;
$(<canvas>).trigger(e);

您可能还必须在计算中包括 Canvas 的偏移量。

关于javascript - 有没有一种方法可以单击 Canvas 中的特定点/元素(使用 javascript、jquery 或 selenium),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42821375/

相关文章:

jquery - Bootstrap Modal 关闭然后打开后不滚动

jquery - 想要阻止页面重新加载/离开直到 Ajax 请求完成

javascript - Jquery,ajax 按钮不工作

javascript - 在 Reactjs 中读取 excel 文件

javascript - 如何在Javascript中用英文单词写一个整数?

jquery - Rails/jquery 将 jQuery 中收集的变量(ID)传递给 Rails Controller /操作

html - 水平滚动但第一列固定的表格

html - 在 css 中显示完整图像

javascript - React 使用状态更新输入文本值并使其可变

JavaScript - 如果第一个值为零,则读取 Json