jquery在iframe中收听事件

我正在使用 jquery制作一个非常简单的Rich Text Editor …我不想使用第三方编辑器.

我需要在iframe(同一个域等)中侦听事件,从打字开始.显然我需要使用bind()很多.

这是我现在在IE8工作正常(令人惊讶的是)而不是Chrome.

<script>
$(function() {
    $('#text').contents().bind("keyup keydown keypress",function(e) {
        var code = e.keyCode || e.which;
        alert(code);
        return false;
    });
});
</script>

<body>
    <iframe id="text" name="text" src="edit.html"></iframe>
</body>

在上面的按键新闻事件中,我还要获取当前的“edit.html”值,并更新一个带有该值的textarea …

任何帮助将是很赞赏:)

非常感谢

编辑:进一步解释,edit.html是一个可编辑的文件,使用“document.body.contentEditable = true;”

编辑2:

edit.html =

<script language="javascript">
    function InitializeIFrame() {
        document.body.contentEditable = true;                         
    } 

</script>
<html>
<body onload="InitializeIFrame();">

</body>
</html>

解决方法

当我尝试与iframe(同一个域等)进行通信时,我似乎记得遇到一个问题.我发现的技巧是在框架内绑定绑定到主窗口中的函数.这样的东西(在edit.html中):
<script>
$('body').bind("keyup keydown keypress",function(e) {
  window.parent && window.parent.funcKey && window.parent.funcKey(e);
});
</script>

然后在主页面如下:

<script>
function funcKey(e) {
  var code = e.keyCode || e.which;
  alert(code);
  return false;
}
</script>

我意识到这并不完全符合你想要做的方式,但效果也是一样的.从我对javascript和iframe的了解,在实践中,与父对象进行沟通比与iframe通信更容易.如果你真的需要双向通信,你可以(上面的例子)使用函数funcKey()的返回值将数据传回iframe.

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...