我正在使用 jQuery 1.7.1
我的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 的 URL。我得到了整个浏览器窗口的所有真实键控,这很好,但为了测试,我希望能够从 JavaScript 模拟键控。但是,无论我尝试什么都行不通。我试过了
$('body').trigger($.Event('keyup', {keycode: 40}))
$(document).trigger($.Event('keyup', {keycode: 40}))
$(document).keyup()
他们都没有触发我的处理程序。然后我想也许问题是我正在使用 iframe,所以我尝试了
$('#frameId').contents().find('body').trigger($.Event('keyup', {keycode: 40}))
不,这也不起作用。我不认为这是任何类型的权限/安全问题,因为$('#frameId').contents().find('body').addClass('test')
工作正常。
我希望我在做一些愚蠢的事情,有人可以很容易地纠正。如何从我的 JavaScript 驱动程序模拟按键?