我正在使用
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.