iframe编辑器光标位置插入内容方法,兼容IE和Firefox

<html>  
<iframe id="x" name="x"></iframe>   
<input type="button" οnclick="t()" value="test">   
<input type="button" οnclick="frames['x'].location.href='about:blank';" value="clear">
<script>   
//setTimeout('window.frames["x"].document.designMode="On"',200);  
function t(){  
   window.frames["x"].document.designMode="On";
   var html = '<b style="color:red">'+$('xx').value+'</b>';      //插入的内容(html),可以是图片。  
   if(getBrowser()=='ie'){  
        var Editor = window.frames["x"];   //IE获取iframe方法,否则图片位置跑到页面顶上去了。  
        Editor.focus();  
        o=Editor.document.selection.createRange();  
        o.pasteHTML(html);  
   }else if(getBrowser()=='chrome'){  
        var Editor = $('x');   //firefox要通过这种方式获取节点才行  
        Editor.focus();  
		//alert(Editor.contentWindow.getSelection().getRangeAt(0));
        var rng = Editor.contentWindow.getSelection().getRangeAt(0);
        var frg = rng.createContextualFragment(html);  
        rng.insertNode(frg);
    }  
}  
//获取浏览器版本  
function getBrowser(){  
    var agentValue = window.navigator.userAgent.toLowerCase();  
    if(agentValue.indexOf('msie')>0){  
        return "ie";  
    }else if(agentValue.indexOf('firefox')>0){  
        return "ff";  
    }else if(agentValue.indexOf('chrome')>0){  
        return "chrome";  
    }  
}  
function $(id){  
   return document.getElementById(id);  
}  
//根据元素className属性获取元素,如果有多个元素样式类名相同,可以用index指定返回第几个元素,第一个为1  
function getNodeByClassName(vclassname,index){  
    //var allnodes = document.all;  
    var allnodes = document.getElementsByTagName("*");  
    var x = 0;  
    for(var i=0;i<allnodes.length;i++){  
        if(allnodes[i].className==vclassname){  
         if(index!="undefined"){  
                 x++;  
         if(x<index){  
                    continue;  
         }  
         }  
             return allnodes[i];  
    }  
    }  
}  
</script>   
输入: <input id="xx">
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值