将原始html代码插入到quill中

Mic*_*ski 7 quill

是否可以选择将原始html代码插入到quill中?

quill.insertText();
quill.clipboard.dangerouslyPasteHTML()
Run Code Online (Sandbox Code Playgroud)

两者都是由matcher解析的,但我需要为电子邮件页脚粘贴格式正确的html代码.

Rya*_*Day 11

如果页脚内容是静态且不可编辑的,则可以通过扩展 BlockEmbed印迹然后在工具栏中为新格式添加按钮来完成此操作.有两种不同的方法可以处理HTML get输入到新格式的内容.

1.让用户输入要嵌入的HTML:

// Import the BlockEmbed blot.
var BlockEmbed = Quill.import('blots/block/embed');

// Create a new format based off the BlockEmbed.
class Footer extends BlockEmbed {

    // Handle the creation of the new Footer format.
    // The value will be the HTML that is embedded.
    // By default, the toolbar will show a prompt window to get the value.
    static create(value) {

        // Create the node using the BlockEmbed's create method.
        var node = super.create(value);

        // Set the srcdoc attribute to equal the value which will be your html.
        node.setAttribute('srcdoc', value);

        // Add a few other iframe fixes.
        node.setAttribute('frameborder', '0');
        node.setAttribute('allowfullscreen', true);
        node.setAttribute('width', '100%');
        return node;
    }

    // return the srcdoc attribute to represent the Footer's value in quill.
    static value(node) {
        return node.getAttribute('srcdoc');
    }

}

// Give our new Footer format a name to use in the toolbar.
Footer.blotName = 'footer';

// Give it a class name to edit the css.
Footer.className = 'ql-footer';

// Give it a tagName of iframe to tell quill what kind of element to create.
Footer.tagName = 'iframe';

// Lastly, register the new Footer format so we can use it in our editor.
Quill.register(Footer, true);

var quill = new Quill('#editor-container', {
    modules: {
        toolbar: {
            container: ['footer'] // Toolbar with just our footer tool (of course you can add all you want).
        }
    },
    theme: 'snow'
});
Run Code Online (Sandbox Code Playgroud)
.ql-toolbar .ql-footer:before {
  content: 'footer';
}
.ql-editor .ql-footer {
  background: #f7f7f7;
}
Run Code Online (Sandbox Code Playgroud)
<link href="//cdn.quilljs.com/1.3.4/quill.core.css" rel="stylesheet"/>
<link href="//cdn.quilljs.com/1.0.0/quill.snow.css" rel="stylesheet"/>
<div id="editor-container">
  <h1>Test Content</h1>
  <p>Enter a footer</p>
</div>
<script src="//cdn.quilljs.com/1.3.4/quill.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

2.使用特定的HTML

// Import the BlockEmbed blot.
var BlockEmbed = Quill.import('blots/block/embed');

// Create a new format based off the BlockEmbed.
class Footer extends BlockEmbed {

    // Handle the creation of the new Footer format.
    // The value will be the HTML that is embedded.
    // This time the value is passed from our custom handler.
    static create(value) {

        // Create the node using the BlockEmbed's create method.
        var node = super.create(value);

        // Set the srcdoc attribute to equal the value which will be your html.
        node.setAttribute('srcdoc', value);

        // Add a few other iframe fixes.
        node.setAttribute('frameborder', '0');
        node.setAttribute('allowfullscreen', true);
        node.setAttribute('width', '100%');
        return node;
    }

    // return the srcdoc attribute to represent the Footer's value in quill.
    static value(node) {
        return node.getAttribute('srcdoc');
    }

}

// Give our new Footer format a name to use in the toolbar.
Footer.blotName = 'footer';

// Give it a class name to edit the css.
Footer.className = 'ql-footer';

// Give it a tagName of iframe to tell quill what kind of element to create.
Footer.tagName = 'iframe';

// Register the new Footer format so we can use it in our editor.
Quill.register(Footer, true);

// Specify the HTML that will be embedded.
var footerHTML = '<h1>Footer</h1>'
    + '<p>This is our new footer</p>';

// Create the footer handler.
var footerHandler = function() {

    // Get the cursor location to know where footer will be added.
    var index = this.quill.getSelection(true).index;

    // Insert the footer with the footerHTML.
    this.quill.insertEmbed(index, 'footer', footerHTML);
};

// Import the Toolbar module so we can add a custom handler to our footer button.
var Toolbar = Quill.import('modules/toolbar');

// Add our custom footer handler to the footer button.
Toolbar.DEFAULTS.handlers['footer'] = footerHandler;

var quill = new Quill('#editor-container', {
    modules: {
        toolbar: {
            container: ['footer'] // Toolbar with just our footer tool (of course you can add all you want).
        }
    },
    theme: 'snow'
});
Run Code Online (Sandbox Code Playgroud)
.ql-toolbar .ql-footer:before {
  content: 'footer';
}
.ql-editor .ql-footer {
  background: #f7f7f7;
}
Run Code Online (Sandbox Code Playgroud)
<link href="//cdn.quilljs.com/1.3.4/quill.core.css" rel="stylesheet"/>
<link href="//cdn.quilljs.com/1.0.0/quill.snow.css" rel="stylesheet"/>
<div id="editor-container">
  <h1>Test Content</h1>
  <p>Enter a footer</p>
</div>
<script src="//cdn.quilljs.com/1.3.4/quill.min.js"></script>
Run Code Online (Sandbox Code Playgroud)

  • @ShyamalParikh,Quill 的文档模型需要 iframe。它使用具有属性和值的对象来跟踪编辑器中的内容并进行更改。如果您添加在 Quill 的文档模型中未正确跟踪的自定义 HTML,它将中断。 (2认同)