summernote在初始化时打印“​​node is null”

时间:2016-02-11 05:37:53

标签: firefox event-handling initialization nodes summernote

我正在使用summernote v0.7.3构建表单。

在chrome中工作得很好,但在firefox中它给出了一个错误的“node is null”。

<div id="${id}_summernote"></div>
<script type="text/javascript">
  $(document).ready(function(){ 
    var s_note = $('#${id}_summernote');
    var summernote = s_note.summernote();
  }
</script>

发生错误的地方是......

var nodeLength = function (node) {
  if (isText(node)) {
    return node.nodeValue.length;
  }

  return node.childNodes.length;
};

summernote.js中的第614行。

node is null以来,其他错误消息也会显示

ImagePopover/this.hide()
 summernote.js:6152
ImagePopover/this.update()
 summernote.js:6147
Context/this.invoke()
 summernote.js:1687
Handle/this.update()
 summernote.js:4903
Handle/this.events["summernote.mousedown"]()
 summernote.js:4841
n.event.dispatch()
 jquery-2.1.1.min.js:3
n.event.add/r.handle()
 jquery-2.1.1.min.js:3
n.event.trigger()
 jquery-2.1.1.min.js:3
.trigger/<()
 jquery-2.1.1.min.js:3
.each()
 jquery-2.1.1.min.js:2
n.prototype.each()
 jquery-2.1.1.min.js:2
.trigger()
 jquery-2.1.1.min.js:3
Context/this.triggerEvent()
 summernote.js:1604
Editor/this.initialize/<()
 summernote.js:3745
n.event.dispatch()
 jquery-2.1.1.min.js:3
n.event.add/r.handle()
 jquery-2.1.1.min.js:3

我该怎么做才能解决这个问题?它发生在某些页面上,而不是全部。

感谢您的回答!

2 个答案:

答案 0 :(得分:0)

为了绕过这个错误,我将方法$(document).ready()更改为document.addEventListener('DOMContentLoaded', function(){}, false)

此新来源

document.addEventListener('DOMContentLoaded', function(){       
    var s_note = $('#${id}_summernote');

    var summernote = s_note.summernote({
        height : 200
        , toolbar: [
            ['style', ['style']],
            ['font', ['bold', 'italic', 'underline', 'clear']],
            ['fontname', ['fontname']],
            ['color', ['color']],
            ['para', ['ul', 'ol', 'paragraph']],
            ['height', ['height']],
            ['table', ['table']],
            ['insert', ['link', 'picture', 'hr']],
            ['view', ['fullscreen', 'codeview']],
            ['help', ['help']]
        ]
        }); 


    s_note.on("summernote.change", function (e) {
        //do jobs for changing event
    }); 
});

不幸的是,将callbacks添加到构造函数不起作用,因此请使用jquery事件处理程序。

度过美好的一天! :d

答案 1 :(得分:0)

我在这里找到了解决方案:https://github.com/summernote/summernote/issues/1667 要解决此问题,请在summernote.js中修改 function nodeLength ,如下所示:

var nodeLength = function (node) {
      if (node === null) {
        return 0;
      } else {
        if (isText(node)) {
          return node.nodeValue.length;
        }
        return node.childNodes.length;
      }
    };