2014-04-28 5 views
1

저는 이와 같은 richtext 편집기를 구현했습니다.
문제 1. 이미지를 제거하고 간단한 div를 넣으면 작동하지 않습니다. 서식 기능이 호출되고 오류가 발생하지 않습니다. 그러나 출력도 없습니다. 나는 div와 span을 위해 이것을 시도했다. 문제 2. IE 10에서 포맷 요소로 이전 요소를 선택해야합니다. 그것은 파이어 폭스에서 잘 작동하지만.IE 10에서는 서식있는 텍스트 편집기가 제대로 작동하지 않습니다.

<script src="~/Scripts/jquery-1.10.2.js"></script> 
     <script> 
     var txtEditor; 

     var viewHtml = 1; 
     function initDoc() { 
      txtEditor = $('#textBox')[0]; 
     } 

     $(window).load(initDoc); 

     function formatDoc(sCmd, sValue) { 
      //if (validateMode()) { document.execCommand(sCmd, false, sValue);    
      $(txtEditor).focus(); } 
      document.execCommand(sCmd, false, sValue); $(txtEditor).focus(); 
     } 

     function validateMode() { 
      if (viewHtml==1) { return true; } 
      alert("Uncheck \"Show HTML\"."); 
      $(txtEditor).focus(); 
      return false; 
     } 

    </script> 
     <style type="text/css"> 
     #textBox { 
      margin-left: 10px; 
      width: 650px; 
      height: 200px; 
      border: 1px #000000 solid; 
      padding: 12px; 
      overflow: scroll; 
     } 

      #textBox , #sourceText { 
       padding: 0; 
       margin: 0; 
       max-width: 650px; 
       min-height: 200px; 
      } 

     #editMode label { 
      cursor: pointer; 
     } 

     .attributesStyle { 
      margin-left: 0px; 
      border: 1px solid #ccc; 
      padding: 3px; 
      float: left; 
     } 

     .link { 
      width: 16px; 
      height: 17px; 
     } 

     .floatLeft { 
      float: left; 
     } 

     .floatRight { 
      float: right; 
     } 

     .marginLeft10 { 
      margin-left: 10px; 
     } 

     .clearBoth { 
      clear: both; 
     } 

     a:hover { 
      cursor: pointer; 
     } 
    </style> 
     <body > 
     <form > 
      <input type="hidden" name="myDoc"> 
      <div style="margin-bottom:10px;"> 
       <div class="floatLeft marginLeft10"> 
        <a onclick="formatDoc('formatBlock', '<h1>');"> 
         <div id="h1" class="attributesStyle"> 
          <img class="link" title="H1" src="~/Images/Heading1.png" /> 
         </div> 
        </a> 
        <a onclick="formatDoc('formatBlock', '<h2>');"> 
         <div id="h2" class="attributesStyle"> 
          <img class="link" title="H2" src="~/Images/Heading2.png" /> 
         </div> 
        </a> 
        <a onclick="formatDoc('formatBlock', '<h3>');"> 
         <div id="h3" class="attributesStyle"> 
          <img class="link" title="H3" src="~/Images/Heading3.png" /> 
         </div> 
        </a> 
        <a onclick="formatDoc('formatBlock', '<h4>');"> 
         <div id="h4" class="attributesStyle"> 
          <img class="link" title="H4" src="~/Images/Heading4.png" /> 
         </div> 
        </a> 
        <a onclick="formatDoc('formatBlock', '<h5>');"> 
         <div id="h5" class="attributesStyle"> 
          <img class="link" title="H5" src="~/Images/Heading5.png" /> 
         </div> 
        </a> 
        <a onclick="formatDoc('formatBlock', '<h6>');"> 
         <div id="h6" class="attributesStyle"> 
          <img class="link" title="H6" src="~/Images/Heading6.png" /> 
         </div> 
        </a> 
        <a onclick="formatDoc('formatblock', '<p>');"> 
         <div id="divParagraph" class="attributesStyle"> 
          <img class="link" title="Paragraph" src="~/Images/paragraph.png" /> 
         </div> 
        </a> 
        <a onclick="formatDoc('formatblock', '<pre>');"> 
         <div id="divParagraph" class="attributesStyle"> 
          Pre 
         </div> 
        </a> 
        <a onclick="formatDoc('formatblock', '<blockquote>');"> 
         <div class="attributesStyle"> 
          <img class="link" title="Quote" src="~/Content/themes/base/images /quote_1.png" /> 
         </div> 
        </a> 
       </div> 
       <div class="floatLeft marginLeft10"> 
        <a onclick="formatDoc('bold');"> 
         <div id="bolds" class="attributesStyle" title="Bold"> 
          <img class="link" title="Bold" src="~/Images/text_bold.png" /> 
         </div> 
        </a> 
        <a onclick="formatDoc('italic');"> 
         <div id="italic" class="attributesStyle" title="Italic"> 
          <img class="link" title="Italic" src="~/Images/text_italic.png" /> 
         </div> 
        </a> 
        <a onclick="formatDoc('underline');"> 
         <div class="attributesStyle" title="Underline"> 
          <img class="link" title="Underline" src="~/Images/text_underline.png" /> 
         </div> 
        </a> 
        <a onclick="formatDoc('insertorderedlist');"> 
         <div class="attributesStyle"> 
          <img class="link" title="Order List" src="~/Content/themes/base/images/list_numbered_32.png" /> 
         </div> 
        </a> 
        <a onclick="formatDoc('insertunorderedlist');"> 
         <div class="attributesStyle"> 
          <img class="link" title="Bullets List" src="~/Content/themes/base/images/text_list_bullets.png" /> 
         </div> 
        </a> 
        <a onclick="formatDoc('undo');"> 
         <div class="attributesStyle" title="undo"> 
          <img class="link" src="~/Content/themes/base/images/rotateLeft.png" /> 
         </div> 
        </a> 
        <a onclick="formatDoc('redo');"> 
         <div class="attributesStyle" title="redo"> 
          <img class="link" src="~/Content/themes/base/images/rotateRight.png" /> 
         </div> 
        </a> 
       </div> 
       <div class="floatLeft marginLeft10"> 
        <a onclick="formatDoc('justifyleft');"> 
         <div class="attributesStyle" title="Justify left"> 
          <img id="justifyleft" class="link" title="Justify Left" src="~/Content/themes/base/images/text_align_left.png" /> 
         </div> 
        </a> 
        <a onclick="formatDoc('justifycenter');"> 
         <div class="attributesStyle" title="Justify Center"> 
          <img id="justifycenter" class="link" title="Justify Center" src="~/Content/themes/base/images/text_align_center.png" /> 
         </div> 
        </a> 
        <a onclick="formatDoc('justifyright');"> 
         <div class="attributesStyle" title="Justify Right"> 
          <img id="justifyright" class="link" title="Justify Right" src="~/Content/themes/base/images/text_align_right.png" /> 
         </div> 
        </a> 
       </div> 

       <a id="divToggleHtml" > 
        <div class="attributesStyle" title="Toggle Html"> 
         Toggle HTML 
        </div> 
       </a> 
       <div class="floatLeft marginLeft10"> 
        <a onclick="javascript: var sLnk = prompt('Write the URL here', 'http:\/\/'); if (sLnk && sLnk != '' && sLnk != 'http://') { formatDoc('CreateLink', sLnk); }"> 
         <div class="attributesStyle" title="Add Link"> 
          <img class="link" src="~/Content/themes/base/images/link.png" /> 
         </div> 
        </a> 
        <a onclick="formatDoc('InsertImage', true);"> 
         <div class="attributesStyle" title="Add Image"> 
          <img class="link" src="~/Content/themes/base/images/image.png" /> 
         </div> 
        </a> 
        <a onclick="formatDoc('Unlink');"> 
         <div class="attributesStyle" title="Unlink"> 
          <img class="link" src="~/Content/themes/base/images/brokenLink.png" /> 
         </div> 
        </a> 
       </div> 
       <div class="clearBoth"> 

       </div> 
      </div> 
      <div id="textBox" contenteditable="true"><i>Amit Sinha</i></div> 
      <p style="display:none;" id="editMode"><input type="checkbox" name="switchMode" id="switchBox" onchange="setDocMode(this.checked);" /> <label for="switchBox">Show HTML</label></p> 
      <p><input type="submit" value="Send" style="display:none;" /></p> 
     </form> 
     </body> 

답변

0

나는 첫 번째 문제점에 대한 해결책을 제공 할 수 있습니다. 거기에 텍스트가있는 한 나를 위해 작동하지 않았습니다.

-webkit-touch-callout: none; 
-webkit-user-select: none; 
-khtml-user-select: none; 
-moz-user-select: none; 
-ms-user-select: none; 
user-select:none; 

이 당신의 컨트롤이 클릭에 응답해야한다 : 문제는

이 버튼 div의 이러한 CSS-설정을 추가 "를 클릭 텍스트 대신 응답을 선택"어떤 종류의 것 같았다. 불행히도, 나는 리눅스에서 일하고있어 2 번째 문제를 테스트 할 수 없다;)