在iframe中停止按键事件

时间:2013-09-22 20:54:57

标签: javascript jquery iframe

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

这可以在同一页面中使用crossbrowser:

$("#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;
    }
});

我错过了什么?有没有一个crossbrowser解决方案?

Fiddle

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

作为Stephen Thomas的回答的补充,这里有一篇很好的文章总结了问题所在:

Attaching an event to a form's elements inside an iframe with a use of jQuery

但是,如果您尝试使用新代码更新您的小提琴,您很可能会收到错误,这些内容如下:

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。作为一种安全措施我猜。虽然我不知道你是否真的能以某种方式跳过它。干杯