Возможно ли отправить диспетчеру() щелчок мыши на элемент <input type = text>?

В основном я пытаюсь отправить пользовательское событие мыши на элемент ввода текста, используя следующий код (см. этот jsFiddle):

function simulateClick(id) {
    var clickEvent = document.createEvent("MouseEvents");
    clickEvent.initMouseEvent("click", true, true, window, 1, 0, 0, 0, 0,
        false, false, false, false, 0, null);

    var element = document.getElementById(id);
    element.dispatchEvent(clickEvent);
}

Когда я запускаю этот код в элементе type="checkbox", он отлично работает, но он не работает вообще при вызове элемента type="text".

Теперь здесь определение initMouseEvent() на MDN:

event.initMouseEvent(type, canBubble, cancelable, view, 
                 detail, screenX, screenY, clientX, clientY, 
                 ctrlKey, altKey, shiftKey, metaKey, 
                 button, relatedTarget);

Итак, в приведенном выше примере screenX, screenY, clientX и clientY все будут 0 (все же приведенный выше код отлично работает с флажками независимо от их положения). Я попытался захватить реальное событие и передать координаты экрана и клиента на событие, сделанное cusom, но безрезультатно.

Хотя, возможно, текстовые элементы ввода игнорируют пользовательские события мыши из-за соображений безопасности, но тогда element.focus() тоже должен работать, что и делает.

Любые идеи или идеи будут очень благодарны!

Ответ 1

Насколько я могу сказать, ваш код работает нормально. Однако он не фокусирует поле ввода, как вы думаете, но событие запускается в поле ввода просто отлично, как видно из этой скрипты: http://jsfiddle.net/ENvZY/

Примечание: код не совместим с crossbrowser, но он не работает в ie8.

Подумайте о том, чтобы использовать хорошую библиотеку кроссбраузеров, например jQuery, вместо того, чтобы идти на родной путь DOM - колесо существует и прекрасно работает, переосмысление это пустая трата времени:)