在线编辑器的问题

自己写的在线编辑器,用的iframe,我现在知道的状况是当iframe的src属性等于空的时候iframe会是编辑状态,但是我想让在写完要写的内容后直接按 alt+s 把内容提交,父窗体的提交我用的ajax,所以就触发一个父窗体的js方法就可以了,但是现在写完字之后焦点在 iframe 里面,而iframe的src又是空的,我怎么把写在父窗体的事件注册给iframe呢?

如果分不够,我另开贴加分,谢谢了
 
 
问题点数:100 回复次数:5 显示所有回复显示星级回复显示楼主回复 修改 删除 举报 引用 回复  
 

 加为好友
发送私信
在线聊天
 varlj
灰色逻辑  要做会说汪汪的老鼠
等级:
可用分等级:富农
总技术分:9511
总技术分排名:2193

 发表于:2008-11-14 19:02:221楼 得分:0
window.parent.doSubmit();//假设doSubmit()是提交方法
 
修改 删除 举报 引用 回复  
 
 加为好友
发送私信
在线聊天
 neo_yoho
yoho~
等级:
可用分等级:掌柜
总技术分:24058
总技术分排名:521
 发表于:2008-11-14 19:08:142楼 得分:0
获取alt+s事件后直接调父窗口function
 
修改 删除 举报 引用 回复  
 
 加为好友
发送私信
在线聊天
 chinmo
藏*无限
等级:
可用分等级:掌柜
总技术分:114683
总技术分排名:45
3
9
 发表于:2008-11-14 19:45:483楼 得分:0
你在alt+s这个按键的事件里直接调用父窗口的事件
 
修改 删除 举报 引用 回复  
 
 加为好友
发送私信
在线聊天
 showbo
要学习了.....さようなら
等级:
可用分等级:富农
总技术分:58143
总技术分排名:142
3
3
 发表于:2008-11-14 22:02:444楼 得分:100
给iframe注册事件

注意一点的是在ff时不能使用frame.document.onclick,这样不响应事件,需要addEventListener来添加事件


eg

HTML code<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>

加支付宝好友偷能量挖...


评论(0)网络
阅读(147)喜欢(1)JavaScript/Ajax开发技巧