在线编辑器的问题

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

如果分不够,我另开贴加分,谢谢了
...全文
145 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
不悲不喜 2008-11-15
  • 打赏
  • 举报
回复
支持楼上
  • 打赏
  • 举报
回复
给iframe注册事件

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


eg
<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>
  • 打赏
  • 举报
回复
你在alt+s这个按键的事件里直接调用父窗口的事件
neo_yoho 2008-11-14
  • 打赏
  • 举报
回复
获取alt+s事件后直接调父窗口function
varlj 2008-11-14
  • 打赏
  • 举报
回复
window.parent.doSubmit();//假设doSubmit()是提交方法

87,997

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧