2011-04-01 64 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'

相關問題