无法将keydown事件绑定到整个文档

时间:2015-01-05 07:14:43

标签: javascript jquery

我的页面中有一些控件(控件保存在iframe中)。我将keydown事件绑定到控件,如下所示,

    $(function () {
        $(document).on("keydown", function (e) {
            if (e.altKey && e.keyCode === 74) { // j- key code.
                $("#accordion").focus();
            }
        });
    });

页面加载后,如果我按下alt + J,控件会在chrome中正确聚焦,但不会在 Firefox和IE 中聚焦。只有当我点击iframe区域然后按下alt + J时,控件才会聚焦。如果我删除了iframe,控件将在所有浏览器中正确聚焦,而无需单击iframe区域。如果我按下alt + J而不需要点击iframe区域,如何让控件获得焦点?

提前致谢。

2 个答案:

答案 0 :(得分:2)

我认为您可以使用document.ready或window.onload

示例请看下面:

$(document).ready(function() {
      $(document).on("keydown", function (e) {
        if (e.altKey && e.keyCode === 74) { // j- key code.
            $("#accordion").focus();
        }
    });
});

或者

$(window).load(function() {
     $(document).on("keydown", function (e) {
        if (e.altKey && e.keyCode === 74) { // j- key code.
            $("#accordion").focus();
        }
    });
});

我希望它适用于所有

答案 1 :(得分:0)

您可以在iframe上使用.load()事件,并使用.contents()获取内容,如下所示:

您可以替换此行:

$("#accordion").focus();

使用此代码:

$('iframe').contents().load(function(){
    $(this).find("#accordion").focus();
});

如果您正在使用iframe,那么您必须等待加载iframe然后执行.focus()