【问题标题】:Is there a way of clicking an specific point/element in a canvas (with javascript, jquery or selenium)有没有办法单击画布中的特定点/元素(使用 javascript、jquery 或 selenium)
【发布时间】:2017-08-06 21:03:40
【问题描述】:

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

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

【问题讨论】:

    标签: javascript jquery html selenium canvas


    【解决方案1】:

    试试怎么样

    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');
        }
    });
    

    我没有时间测试那个 sn-p。如果您知道画布中元素的 x 和 y 坐标,那么该代码就可以解决问题。

    我试图用这个 sn-p 做的是通过 elmentYelementY + elementHeight 以及 elementXelementX + elementWidth 模拟边界框。如果您知道所有这些值,您可以简单地检查您的点击事件的xy 值是否属于该框。

    编辑

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

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

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

    【讨论】:

    • 但是在得到坐标之后,在那之后我可以使用什么函数来点击那个点?
    • 所以你想在特定坐标触发点击?
    • 我使用相对坐标将点击事件传递给画布并使用绝对坐标传递给整个页面,但仍然没有
    • 如果您将点击注册到画布上,您应该能够在其中记录一些内容。您可以调试您传递的坐标是否与单击时收到的画布相同。
    猜你喜欢
    • 1970-01-01
    • 2018-07-02
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 2019-09-23
    相关资源
    最近更新 更多