【问题标题】:Using jQuery hotkeys from within a blurred iFrame在模糊的 iFrame 中使用 jQuery 热键
【发布时间】:2012-12-18 02:47:18
【问题描述】:

我在一个 iframe (iFrame A) 中使用 jQuery Hotkeys,在一个包含两个 iFrame(A 和 B)的页面上。当焦点在 A 上时,热键效果很好。但在使用应用程序期间,我必须定期在 iFrame B 内单击。

如何使 iFrame A 的热键即使在未对焦时也能正常工作?

【问题讨论】:

  • 也将所有热键事件添加到帧 B 吗?或者更好的是,取消框架(并不总是可取的)。
  • 贴一些代码让人们可以看到
  • 热键必须影响 iFrame A 中的元素,并且 iFrame B 中加载的页面不在我的控制范围内。我必须使用框架,因为我在 iFrame B 中访问远程网站。它是一个研究工具,可以让我从本质上监控其他网站。
  • 现在代码不是那么有趣:它只是 iFrame A 中加载的页面代码中的 jQuery 热键。例如:jQuery(document).bind('keydown', '3',函数 (evt){ javascript:AddIt(30); return false; });
  • 如果 IFrame B 位于不同的域中,我认为安全限制会禁止您的父页面侦听 IFrame B 内的按键。您需要能够在 IFrame B 中嵌入脚本并拥有它将消息发布到父页面。如果用户在父页面有焦点,那么您可以在父页面中监听按键,并在 IFrame A 中触发事件或直接调用该功能(即,将热键复制到父页面)。

标签: javascript jquery iframe focus hotkeys


【解决方案1】:

我广泛使用带有热键的 iframe。我让热键调用一个名为“keyPressed”的函数,该函数根据组合键确定要做什么。如果我在一个通常在 iframe 中加载的页面上,我会让 iframe 的父级在 iframe 加载时绑定额外的热键。如果 iframe 页面的 keyPressed 函数没有特定用途,它将尝试将热键传递给父级。但是,这仅在您可以控制 iframe(它们是您网站的一部分)时才有效。

//handles all key pressed events
function keyPressed(keyname) {
    if (keyname == 'alt+s') {
        SaveStdPage();        
    }
    else if (keyname == 'alt+d') {
        ClickButton('TrashBtn');
    }
    else {
        //Pass hotkey to parent 
        try{
            parent.keyPressed(keyname);
        }
        catch (ex) {
            console.log(keyname);
        }
    }
}

【讨论】:

  • 谢谢!这是一个我没有想到的好策略。我只需要弄清楚如何将代码注入到我在 iFrame 中加载的远程页面中,这听起来并不难。
猜你喜欢
  • 2019-06-24
  • 2011-07-22
  • 1970-01-01
  • 2012-11-16
  • 1970-01-01
  • 1970-01-01
  • 2015-06-10
  • 2017-01-04
  • 2012-12-11
相关资源
最近更新 更多