2011-01-31 2 views
2

в FF, я использовал этот код:JavaScript, имитировать события клавиатуры, работа на хром (WebKit)

 

if (keyCount == lineLimit) { 
    // method in FF, no Chrome 
    var mock = document.createEvent("KeyboardEvent"); // or KeysEvent 
    mock.initKeyEvent("keypress",true,true,null,false,false,false,false,14,0); 
    var x = document.getElementById('InputCategory'); 
    // rise height before Enter 
    $(this).height(div_height + font_height + offset_height); 
    // mock Enter 
    x.dispatchEvent(mock); 
    // init keyCount 
    keyCount = 0; 
} 

он работает, но не может быть эффективным на WebKit на основе браузеров, таких как хром.

так я спросил Google и нашел событие клавиатуры один из DOM Level 3, вот Aticle: http://www.w3.org/TR/DOM-Level-3-Events/

тогда я знал,/* initKeyboardEvent /не поддерживается на хром & сафари,/ initUIEvent */i пробовал, он тоже не работает.

Действительно ли виртуальная клавиатура может быть смоделирована на хроме? plesase help me :)

+1

Почему вы не просто вставить символ новой строки-символ вместо того, чтобы пытаться для эмуляции enter-press? – Alxandr

+0

@Alxandr, который мог бы работать ~, но теперь я просто хочу понять, как инициализировать событие клавиатуры js и работать с хромом. – Reorx

ответ

2

Это работает, но это не событие keypress, а скорее событие вставки текста.

var te = document.createEvent('TextEvent'); 
te.initTextEvent('textInput', true, true, window, 'test'); 
<element>.dispatchEvent(te); 

Это вставляет слово «тест» в конце ввода (в вашем случае, вы, вероятно, заменить что \n.

+0

Хорошо ~ это сработает, но вы можете научить меня, как имитировать событие клавиатуры в Chrome или просто сказал мне, что это возможно, большое спасибо ~~ – Reorx

+1

Возможно, я видел это, но не смог сделать это сам. Если вы удовлетворены ответом, отметьте его как принято. – Alxandr

+0

Можете ли вы обновить этот ответ, поскольку он [устарел] (https://developer.mozilla.org/en-US/docs/Web/API/Document/createEvent)? –

Смежные вопросы