Проблема, связанная с MouseEvents - PullRequest
1 голос
/ 28 ноября 2009

Теперь я ловлю события щелчка мышью на элементах textarea.

Поскольку я должен остановить распространение после обработки события, каретка не будет установлена ​​как обычно, когда мы используем щелчок на текстовых областях со средней клавишей. Но мне нужно установить его перед выполнением дальнейших работ, поэтому я попытался отправить событие мыши вручную.

Мой код:

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 Ответ

1 голос
/ 28 ноября 2009

Поддельные события не вызывают действия по умолчанию. Вы должны воспроизвести их сами.

В этом случае вам придется использовать selectionStart и selectionEnd для установки позиции фокуса ввода на текстовой области. Однако получить соответствующие смещения строк из местоположения мыши было бы довольно сложно.

Не ясно, какая цель стоит за тем, что вы пытаетесь сделать, но вам придется найти другой обходной путь. Может быть, вы могли бы разрешить действие по умолчанию, но затем размыли текстовую область после нее и снова сфокусировали ее? Вы также можете запомнить свойства selectionStart / selectionEnd сразу после щелчка, чтобы вернуть фокус в любой более поздний момент, если позиция может измениться за это время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...