FireFox、IE得到iframe编辑框的光标位置并插入图片

(转)FireFox、IE得到iframe编辑框的光标位置并插入图片
2010-12-18 14:29

在制作html编辑器,有些时候iframe编辑器需要在光标处插入图片。firefox和ie有差别的。如下:

//FireFox

var obj = document.getElementByIdx_x_x("SendMsg");//iframe框架的

var win = obj.contentWindow;
var sel=win.getSelection(),rng=sel.getRangeAt(0),frg=rng.createContextualFragment(要在光标处插入的内容);
rng.insertNode(frg);



//IE

var obj = document.frames("SendMsg");
obj.focus();
var range =obj.document.selection.createRange();
var str1="要在光标处插入的内容";
range.pasteHTML(str1);



参考:http://www.code-design.cn/blogdetail2641.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" " http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns=" http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=gb2312" />
<title>HTML编辑失去焦点后在原来光标位置插入信息/图片--编程设计网</title>
</head>
<body>
  <br ><iframe style="width:300px;height:200px" id="editor"></iframe>
  <br >内容:<input type="text" id="txt" οnmοusedοwn="SaveRange()" /><input type="button" οnclick="insert()" οnmοusedοwn="SaveRange()" value="插入输入的字符在HTML编辑器原位置" />
  <script type="text/javascript">
  var isIE=!!document.all,ieRange=false,editor,win,doc,txt;
  window.οnlοad=function(){
   editor=document.getElementByIdx_x('editor');
   win=editor.contentWindow;
   doc=win.document;
   txt=document.getElementByIdx_x('txt');  
   doc.designMode='On';//可编辑
   win.focus();
  }
  function SaveRange(){//IE下保存Range对象
   if(isIE&&!ieRange){//是否IE并且判断是否保存过Range对象
   var sel=doc.selection;
ieRange=sel.createRange();
if(sel.type!='Control'){//选择的不是对象
var p=ieRange.parentElement();//判断是否在编辑器内
if(p.tagName=="INPUT"||p==document.body)ieRange=false;
   }
   }
  }
  function insert(){
   if(txt.value==''){alert('请输入内容!'); txt.focus();return false;}
   if(ieRange){
   ieRange.pasteHTML(txt.value);
   txt.value='';
   ieRange.select();ieRange=false;//清空下range对象
   }
   else{//焦点不在html编辑器内容时
   win.focus();
   if(isIE)doc.body.innerHTML+=txt.value;//IE插入在最后
   else{//Firefox
   var sel=win.getSelection(),rng=sel.getRangeAt(0),frg=rng.createContextualFragment(txt.value);
   rng.insertNode(frg);
   }
   }
  }
  </script>
</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值