2011-04-01 88 views

回答

23

您正在寻找将派发事件的内容。这是应该工作的东西:

function fireKey(el) 
{ 
    //Set key to corresponding code. This one is set to the left arrow key. 
    var key = 37; 
    if(document.createEventObject) 
    { 
     var eventObj = document.createEventObject(); 
     eventObj.keyCode = key; 
     el.fireEvent("onkeydown", eventObj); 
    }else if(document.createEvent) 
    { 
     var eventObj = document.createEvent("Events"); 
     eventObj.initEvent("keydown", true, true); 
     eventObj.which = key; 
     el.dispatchEvent(eventObj); 
    } 
} 

我做了一个很酷的小接口测试,它可能会让你感兴趣。以下是它的外观:http://jsfiddle.net/FvCut/6/

测试为在Firefox 3.6,Opera 11,Safari 5,IE 8和IE 7/IE Quirks Mode中工作。值得注意的是:当您像大多数浏览器一样按住某个键时,Opera 11不会触发重复的“keydown”事件。

+1

这是我玩过的最有趣的游戏。 – 2011-04-01 18:07:48

+0

这是在Safari/Chrome中为我工作的少数片段之一。谢谢! – auco 2012-04-14 23:35:04

+0

谢谢。但它不起作用(移动Safari)。有没有可能发送全球文件的事件? – Dmitry 2012-08-09 13:30:26

0

你是如何模拟事件的? document.dispatchEvent不适用于所有浏览器。 您可以使用此测试功能:typeOf(document.dispatchEvent) != 'undefined'

相关问题