我正在使用jQuery 1.7.1爲什麼我的jQuery觸發keyup事件會丟失?
我的keyup
處理程序工作正常,即使設置有點複雜。這發生在iframe覆蓋中。主要頁面確實
our.Catalog.makeViewer = function(id) {
var iframe = document.createElement('iframe');
iframe.setAttribute()... // src, id, name, etc. Exact same host and method
document.body.appendChild(iframe);
iframe.contentWindow.focus();
$('html, body').css('overflow', 'hidden');
}
our.Catalog.makeViewer('foo') // actually bound to a click hander
在iframe <head>
,我們有一些像
our.Viewer = function(){
$(document).keyup(function(e){ doSomething() })
// and lots more, of course
}
$(function() {
new our.Viewer();
});
瀏覽器顯示的iframe的網址。我爲整個瀏覽器窗口獲得了所有真正的鍵盤,這很好,但爲了測試,我希望能夠模擬JavaScript中的鍵盤輸入。但是,無論我嘗試什麼都行不通。我試過
$('body').trigger($.Event('keyup', {keycode: 40}))
$(document).trigger($.Event('keyup', {keycode: 40}))
$(document).keyup()
並沒有一個觸發我的處理程序。然後我想也許問題是我使用iframes,所以我試過
$('#frameId').contents().find('body').trigger($.Event('keyup', {keycode: 40}))
不,也不管用。我不認爲這是任何類型的權限/安全問題,因爲$('#frameId').contents().find('body').addClass('test')
工作正常。
我希望我在做一些愚蠢的事情,很容易讓人糾正。我怎樣才能模擬我的JavaScript驅動程序中的鍵盤輸入?
我對你的整個HTML設置有點困惑。你在哪裏綁定'keyup'處理程序?在父頁面還是在iframe中?事件不會從iframe中冒出來,所以你不能在iframe中觸發事件**,並期望在父頁面中捕獲它們。 – Ian 2013-04-08 06:44:25
@Ian他建議他使用''而不是'
似乎工作正常http://jsfiddle.net/Exuh4/1/ – 2013-04-08 07:22:50