0

我坚持在 iframe 内的输入上停止ENTER键。

这适用于跨浏览器,在同一页面内:

$("#input").keypress(function (event) {
    console.log(event.which); //works good
    if (event.which == 13) {
        return false;
    }
});

不起作用停止/捕获 iFrame 内的按键事件。

$("#my_iframe").contents().keypress(function (event) {
    console.log(event.which); // nothing loged
    if (event.which == 13) {
        return false;
    }
});

我错过了什么?有跨浏览器解决方案吗?

小提琴

4

2 回答 2

3

在附加事件处理程序之前,您无需等待 iframe 加载。

于 2013-09-22T21:04:36.080 回答
0

作为斯蒂芬托马斯回答的补充,这里有一篇很好的文章总结了问题所在:

使用 jQuery 将事件附加到 iframe 内的表单元素

但是,如果您尝试使用新代码更新您的小提琴,您很可能会收到错误消息,如下所示:

Blocked a frame with origin "http://fiddle.jshell.net" from accessing a frame with origin "http://jsfiddle.net". Protocols, domains, and ports must match

似乎 jsfiddle 使用两个不同的服务器进行内部工作,这违反了“同源”政策——简而言之,您不应该能够从不同站点访问 iframe 的 DOM。作为一种安全措施,我猜。虽然我不知道你是否真的可以以某种方式跳过它。干杯

于 2013-09-22T21:20:48.583 回答