【问题标题】:keydown event on a iframeiframe 上的 keydown 事件
【发布时间】:2009-07-29 09:37:46
【问题描述】:

如何在 iframe 上获取 keydown 事件?

【问题讨论】:

标签: jquery


【解决方案1】:

您需要通过 ContentWindow 对象访问 iframe 的文档

$(document.getElementById('IFrameId').contentWindow.document).keydown(function(){ alert('Key down!'); });

确保在框架加载后绑定事件。

【讨论】:

  • @Aksival 当然,我一直在绞尽脑汁想知道为什么现在这不起作用了。
  • @RedHouse 我已经更新了答案以澄清这一点(我认为 Aksival 的评论对人们来说已经很清楚了)
  • 这里是加载后的绑定方式 document.getElementById('IFrameId').onload = function(){ 如上 };
  • 对我不起作用。 :(
【解决方案2】:

Adding event handler to an iframe using JQuery

$(document.getElementById('iframe_id').contentWindow.document).keydown(function() {
    // my func
});

【讨论】:

  • $("#iframe_id").get(0).contentWindow.document 等价于$(document.getElementById('iframe_id').contentWindow.document)
【解决方案3】:

现在回答太晚了,但也许对某人有用。
我有同样的问题,这意味着我在 same domain 中有一个 iframe inside a HTML 页面。
现在我需要得到Esc keyup event
但是我不想(或者有时我不能)在 iframe 正文中编写任何脚本。
为此,我使用下面的脚本来检测通过单击它选择的元素的父 ID 是什么。

 $(window).load(function () {
            jQuery(jQuery('[id="frame"]')[0].contentWindow.document).on('keyup', function (e) {

                var _currntItem = ($(e.target))

                if (e.keyCode === 27) {
                    alert(_currntItem.parent().attr('id'));
                }
            }); 

这段代码解决了我的问题。
希望有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-14
    • 1970-01-01
    • 2017-09-20
    • 2019-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多