【问题标题】:first line problem in nicedit ?nicedit 中的第一行问题?
【发布时间】:2023-04-08 21:20:02
【问题描述】:

您好,我的 nicedit 编辑器有个小问题

问题是

第一行不受影响!

示例:

我在文本框的第一行写了(asdad)

我标记它并点击(居中对齐)

它应该去盒子的中心

看这张照片

这个问题只在第一行..

其他都很好

问题只在firefox!

我正在使用 firefox 3..... 我看到了这个问题!

我的代码是

<script src="http://js.nicedit.com/nicEdit-latest.js" type="text/javascript"></script>
<script type="text/javascript">bkLib.onDomLoaded(nicEditors.allTextAreas);</script>
<textarea cols=40 rows=10></textarea>

谢谢!

【问题讨论】:

    标签: javascript nicedit


    【解决方案1】:

    我也有这个问题。而且我们并不孤单:) 这是 nicEditor 的错误http://nicedit.com/forums/viewtopic.php?f=4&t=364&p=848&#p848。而且看起来还没有修复。

    我已经通过使用 TinyMCE-editor 解决了这个错误 :) 如果您没有使用 nicEditor,我建议您查看 TinyMCE。

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      我为此开发了一个解决方案。 问题是不在 div 中的第一行。 这将解决它

      $(document).ready(function () {
          $('.nicEdit-main').bind('DOMSubtreeModified',function(){
              nicEditFirstLinePatch();
          });
      });
      

      function nicEditFirstLinePatch(){
          function placeCaretAtEnd(el) {
          el.focus();
              if (typeof window.getSelection != "undefined"
                      && typeof document.createRange != "undefined") {
                  var range = document.createRange();
                  range.selectNodeContents(el);
                  range.collapse(false);
                  var sel = window.getSelection();
                  sel.removeAllRanges();
                  sel.addRange(range);
              } else if (typeof document.body.createTextRange != "undefined") {
                  var textRange = document.body.createTextRange();
                  textRange.moveToElementText(el);
                  textRange.collapse(false);
                  textRange.select();
              }
          }
          textNode=$('.nicEdit-main').contents().filter(function(){ 
              return this.nodeType == 3; 
          })[0];
          $('.nicEdit-main').attr('id','toHandle');
          if(textNode){
              var newNode = document.createElement('div');
              var newNodeContent = document.createTextNode(textNode.nodeValue);
              newNode.appendChild(newNodeContent);
              var parentNode=document.getElementById('toHandle');
              parentNode.replaceChild(newNode,textNode);
              var range = document.createRange();
              range.setStart(newNode,0);  
          }
          if(document.getElementById('toHandle').children.length==1){
              placeCaretAtEnd(document.getElementById("toHandle"));
          }
      }
      

      它在 Chrome 55.0.2883.87 上运行良好。我认为这是跨浏览器,但我不确定。然而这是一个好的开始:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-10-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-26
        • 2017-04-28
        • 2017-02-02
        • 2018-01-05
        相关资源
        最近更新 更多