有关MouseEvents的问题

时间:2009-11-28 11:13:45

标签: javascript firefox

我现在正在捕捉textarea元素上的鼠标点击事件。

由于我必须在处理事件后停止传播,因此当我们使用中键单击textareas时,将不会像往常一样设置插入符号。但我需要在进行进一步的工作之前设置它,所以我尝试手动调度鼠标事件。

我的代码是:

var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window, 1, origEvt.screenX, origEvt.screenY,
    origEvt.clientX, origEvt.clientY, false, false, false, false, 0, null);
origEvt.target.dispatchEvent(evt);
...

此代码尝试模拟在同一位置的同一元素上的左键单击。可以捕获已分派的事件,但是,未设置插入符号。

有人可以指导我怎么做吗?

1 个答案:

答案 0 :(得分:1)

伪造事件不会导致发生默认操作。你必须自己复制它们。

在这种情况下,您必须使用selectionStartselectionEnd在textarea上设置输入焦点位置。但是,从鼠标位置获取适当的字符串偏移量会相当棘手。

目前尚不清楚你想要做的目的是什么,但你必须找到另一种解决方法。也许您可以允许默认操作发生,但之后模糊textarea并稍后将其重点关注?如果位置可能在此期间发生变化,您也可以在点击后立即记住selectionStart / selectionEnd属性,以便将焦点设置回任何稍后的位置。