【问题标题】:Can you listen to key events inside a frame if the origin is different?如果原点不同,你能听到帧内的关键事件吗?
【发布时间】:2014-04-09 03:34:06
【问题描述】:

我正在尝试在我的页面上放置一个 keydown 侦听器。但是,我的页面包含一个 iFrame,如果我在 iFrame 内单击并按下我的键,处理程序不会触发。我尝试了来自网络的各种公式来访问 iFrame 内的文档并在其上放置一个侦听器,但它似乎不起作用。

文档中的内容不是来自同一来源。它来自与我的网站不同的域。

我可以监听 keydown 事件吗?还是不可能?

【问题讨论】:

  • 你能注入一些 JS 代码(类似于bookmarklet works)来捕获你想要的击键吗?
  • 我认为我可以构建一个有效的示例,但 iframe 很奇怪,跨源 iframe 更是如此。我得到了一些使用相同来源网页的示例,但不是来自不同域。事实上,我的同源网页通过在 iframe.contentWindow 上设置事件来工作,跨源时似乎被阻止。
  • 我知道它的老问题,但因为我很无聊,我还是会回答它:) 你可以在你的顶部元素上使用 element.focus()。因此,假设您将在 iframe 上添加点击侦听器。每次点击呼叫焦点。希望对您有所帮助。

标签: javascript jquery iframe addeventlistener same-origin-policy


【解决方案1】:

简短回答:不。

长答案(根据我的理解):您不能监听诸如按键等事件,因为这将涉及将监听器绑定到文档中的元素,如果您可以访问这些元素,那么理论上您可以修改所述文档的内容,如果不拥有该内容的人将其嵌入到他们的页面中,这是不可取的。也就是说,您可以为 iframe 触发一个 onload 事件,或者使用一些 CSS 定位覆盖一个 div,这些位置上会有关键的侦听器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多