使用全局范围创建mousedown事件

时间:2013-03-21 20:58:59

标签: javascript jquery mouseevent mousedown onmousedown

我正在攻击某些东西来修复另一个系统约束的问题。不理想,但是..

无论如何,我需要生成一个点击/触摸,然后找出poing (300, 300)下的最顶层元素。我正在使用:

event = $.Event( "mousedown", { pageX:300, pageY:300 } );
$("window").trigger( event );

然后我在听:

$(window).bind 'mousedown', (jQueryEvent)->
    console.log jQueryEvent.target

但是,event.target总是返回窗口。这是有道理的。但是,我要做的是在整个页面上生成一个mousedown事件,然后使用event.target找出(pageX, pageY)下的哪个元素。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

你看过document.elementFromPoint吗?这可能是一种在特定位置找到元素的简洁方法。

https://developer.mozilla.org/en-US/docs/DOM/document.elementFromPoint

答案 2 :(得分:0)

pageX和pageY在事件变量本身上,而不在目标上。但他们被mousedown事件覆盖了。你不需要为此创建一个事件,关闭将正常工作:

function hotspot (a, b) {
    var x = a[0] || 0;
    var y = a[1] || 0;
    var w = b[0] || 0;
    var h = b[1] || 0;
    function between (x2, y2) {
        return x2 >= x &&
            y2 >= y &&
            x2 <= (x + w) &&
            y2 <= (y + h);
    }
    return function (e) {
        console.log("mouse x y:", e.pageX, e.pageY);
        console.log("target x y w h:", x, y, w, h);
        console.log(between(e.pageX, e.pageY));
    }
}
$(document).on('mousedown', hotspot([0,0], [300,300]));

http://jsfiddle.net/gpaMz/1/

编辑:重新阅读你的问题,我只是不知道你想要实现的目标。