如何在html-editor中删除ace编辑器的第一个doctype工具提示?

时间:2015-10-20 09:16:00

标签: javascript html ace-editor

我们要求用户在这里定义html,所以添加div或类似的部分。所以,我在编辑HTML时需要验证工具提示。但是,不要有doc-type警告。

tooltip of ace editor

3 个答案:

答案 0 :(得分:9)

试试这个

var session = editor.getSession();
session.on("changeAnnotation", function() {
  var annotations = session.getAnnotations()||[], i = len = annotations.length;
  while (i--) {
    if(/doctype first\. Expected/.test(annotations[i].text)) {
      annotations.splice(i, 1);
    }
  }
  if(len>annotations.length) {
    session.setAnnotations(annotations);
  }
});

答案 1 :(得分:3)

“意外的文件结束。预期的DOCTYPE”。警告已过滤。

var session = editor.getSession();
session.on("changeAnnotation", function () {
    var annotations = session.getAnnotations() || [], i = len = annotations.length;
    while (i--) {
        if (/doctype first\. Expected/.test(annotations[i].text)) {
            annotations.splice(i, 1);
        }
        else if (/Unexpected End of file\. Expected/.test(annotations[i].text)) {
            annotations.splice(i, 1);
        }
    }
    if (len > annotations.length) {
        session.setAnnotations(annotations);
    }
});

答案 2 :(得分:1)

如果相反,您直接在annotations上进行操作并直接调用编辑器onChangeAnnotation方法来更新页面上的注释,则可以防止触发另一个changeAnnotation事件并两次调用此事件处理程序就像克里斯的答案一样。

var editor = Application.ace.edit(element),
    session = editor.getSession();

session.on('changeAnnotation', function () {
  session.$annotations = session.$annotations.filter(function(annotation){
    return !(/doctype first\. Expected/.test(annotation.text) || /Unexpected End of file\. Expected/.test(annotation.text))
  });
  editor.$onChangeAnnotation();
});