document.frames["edit"].document.onkeyup = function() {alert(1);};

解决方案 »

  1.   


    谢谢您的回复,可是这句话应该放在哪里呢?
    在iframe.onload()里还是其他地方?谢谢~~ 
      

  2.   


    如:edit.document.body.onkeydown = func();  //edit是iframe的名字
    或者:  edit.document.body.id = "editBody";
            $('editBody').onkeydown = func();  
    ---------------------------------
    你的这些写法,在FF里根本不行他不认识,1楼的方法是正确的,至于你要吧程序放在哪里,根据自己的需要写吧。
    点击左上角【结贴去】给人加分就行了
      

  3.   

    在firefox下可编辑的iframe不能通过editor.document.body.onclick=function(e){}这样来添加事件,要不不响应要使用addEventListener其实firefox3可以支持div的contenteditable属性的,firefox2一下版本不支持
    <table width="300px" border="0" cellspacing="0" cellpadding="0">
    <tr><td style="border:1px solid #81a9ce;background:#fff;">
    <iframe id="editor" src="about:blank" style="height:100px;width:100%;background:#fff;" frameBorder="0" marginHeight='0' marginWidth='0' onload="setEditable()"></iframe>
    </td></tr></table>
    <script>
    var IsIE=!!document.all;
    function $(objId,IsFrame){
      if(IsFrame) return IsIE?frames[objId]:document.getElementById(objId).contentWindow;
      else return document.getElementById(objId);
    }
    function setEditable(){
      try{ 
        var frm=$('editor',true);
        doc=frm.document;       
        if(doc.body){
           doc.body.style.backgroundColor='#ffffff';
           doc.body.style.fontSize='12px';
           doc.body.style.fontFamily='verdana';
           doc.body.style.margin='4px';
        }
        doc.designMode="On";
        doc.contentEditable="True";
        InitFrameEvent(frm,doc);//注册事件
      }catch(e){alert(e)}
    }function InitFrameEvent(frm,doc){
      //=====================IE===================   
       if(IsIE)
         doc.onkeydown=function(){
           e=frm.event;//注意这里获取的是iframe中的事件对象      
           if(e.altKey&&e.keyCode==83)PostMethod()
         }
       else//firefox
         doc.addEventListener(
            'keydown'
            ,function(e){
              if(e.altKey&&e.keyCode==83){
                e.preventDefault();//你的快捷键和firefox的历史快捷键冲突,所以要阻止默认事件
                PostMethod();
              }
            }
           ,false);
    }function PostMethod(){
      alert('按下Alt+S键,执行ajax提交');
    }
    </script>
      

  4.   


    拜谢拜谢!! 终于可以了!!
    原来要用addeventlistener, 您真是高人阿~~我不用div的contenteditable是因为在firefox里只有iframe能用execCommand, 我本来也是用div写的输入框,用insertNode来加标签,可是弄到后来有太多东西要写了,太痛苦了,所以改投iframe的怀抱.仍然非常感谢!!!