求个类似于execCommand函数,简单的就可以,而不像浏览器自带的那样复杂,需要支持5大浏览的:
Internet Explorer 6/8
Mozilla Firefox
Safari
Opera
Google Chrome能够在选种的地方插入指定的标签或样式功能就可以,不需要删除功能

解决方案 »

  1.   

    你可以的。一般人研究不到这种程度。是不是看了googleDoc啊
      

  2.   


    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>new document</title>
    <script type="text/javascript">
    function setColor() {
    if (document.all) {
    var range = document.selection.createRange();
    range.select();
    range.pasteHTML("<span style='color:#ff0000'>" + range.htmlText + "</span>");
    } else {
    var range = window.getSelection().getRangeAt(0);
    var span = document.createElement("span");
    span.style.cssText = "color:#ff0000";
    range.surroundContents(span);
    }
    }
    </script>
    </head>
    <body>
    <div>fdjlksafjd;slafjd;slakfjds</div>
    <input type="button" onclick="setColor()" value="setColor" />
    </body>
    </html>
    支持全浏览器
      

  3.   

    系统 execCommand 函数支持很多功能的!楼主想做什么呢?现在很多浏览器都支持 execCommand 这个函数了!我自己写了一个在线编辑器,都是使用的这个系统函数。IE,FF,chrome 完全支持!没测试过Safari,Opera!  不过 FF,chrome 都支持,他们也应该是支持的。楼主可以测试一下
      

  4.   

    如果你学多了,就知道execCommand已经很简单了。只是因为它功能很多,所以没办法象你期望的那样简单。不过,你可以写个自定义函数,在里边调用它,不就简化了吗,只需使用你定义的传参方式就行了。想不到这一点,就是基础学得少的原故,没事多作点练习。
      

  5.   


    <script type="text/javascript">
        function setColor() {
            if (document.all) {
                var range = document.selection.createRange();
                range.select();
                range.pasteHTML("<span style='color:#ff0000'>" + range.htmlText + "</span>");
            } else {
                var range = window.getSelection().getRangeAt(0);
                var span = document.createElement("span");
                span.style.cssText = "color:#ff0000";
                range.surroundContents(span);
            }
        }
    </script>
    上边的代码只在ie跟ff有效,Safari,Opera,Google Chrome中无效
      

  6.   

    Opera10经测试通过。
    Safari和Chrome内核相同,应该也可以用吧lz什么浏览器啊
      

  7.   

    最简单是实现方法 ///格式化html
        function formatHTML(commandName, params)
        {
         try{
                document.execCommand(commandName, !!document.all, params);
            }catch(ex){ alert('浏览器不支持!');}
        } formatHTML('fontname' ,"宋体");
    formatHTML('Bold' ,'');
     formatHTML('ForeColor',‘red’);
     formatHTML('Italic' ,'');
    formatHTML('Underline' ,''); // 插入图片
        function insetImg(url){
             var range ;
            if(window.getSelection){ 
                range=window.getSelection().getRangeAt(0);    
            }else if(window.document.selection){ 
                range=window.document.selection.createRange();
            }
           
            if(range.pasteHTML)
            {
                 range.pasteHTML('<img src=\''+url+'\'/>'); 
            }else{
        
                
            if(range){
                 var img = document.createElement('img');
                img.src=url;
                range.surroundContents(img);
              }
                
            }
        }insetImg('图片路径');
      

  8.   

    5种浏览器我都安了,全测试过,我这里只有ff跟ie可以,其它的不可以
      

  9.   

    我的代码在这里
    http://www.izhaoyang.com/test/example.htm
    可以结合下你的代码做参口
      

  10.   

    你的代码,我在chrome上跑是可以的。你检查下你的浏览器有没有禁用javascript
      

  11.   

    搞定了,是一个跨域问题造成的,大概是这么个意思:这么写只有FF中有效:document.createElement("标记名")而要想在Google Chrome等浏览器中有效需要加上页面作用域的引用:window.frames["ID"].document.createElement("标记名")谢谢各位了,问题已解决,为此还特意将ie跟w3c的selection/range说明文档完全的看了一边,我决定自己定义一个execCommand函数,看来不难
      

  12.   

    欢迎大家关注我的HTML在线编辑器Miniweaver
      

  13.   

    很多地方,你try catch下,马上就知道错哪里了,我真的无语
      

  14.   


    我也做过一个简单的在线编辑器!当时,也遇到过这个问题!
    要用 Iframe 下的  document.createElement 创建的,才能添加进去!