javascript - WordPress 编辑器在复制和粘贴时如何保留文本格式?

标签 javascript wordpress tinymce editor

我注意到当我们从其他地方复制并粘贴一些东西到 WordPress 编辑器时,它会保留其原始形式。粘贴的数据不仅仅是一些文本,还有 HTML 和 CSS。 WordPress 是如何做到的?我可以提供代码示例或引用吗?

最佳答案

我假设(我没看过)他们回应了 paste event并使用 getData methodclipboardData ClipboardEvent 的属性(property)对象,要求它提供格式化文本(可能传递 "text/html" 作为 format 参数)。然后他们获取生成的 HTML 并将其包含在编辑器中。

例如:如果您将上面段落的文本复制到剪贴板,然后运行此代码段并单击代码段正文中的任意位置并按系统上的粘贴键盘快捷键(Ctrl+V 等),它应该显示剪贴板中的格式化文本:

document.addEventListener("paste", function(e) {
    document.getElementById("output").innerHTML =
      (e.clipboardData && e.clipboardData.getData("text/html")) || "";
});
<div>Click here to focus the window, then do a paste</div>
<div id="output"></div>

如果 "text/html" 没有得到任何东西,他们可能会退回到 "text/plain":

document.addEventListener("paste", function(e) {
    if (e.clipboardData) {
        var output = document.getElementById("output");
        var str = e.clipboardData.getData("text/html");
        if (str) {
            console.log("html");
            output.innerHTML = str;
        } else {
            console.log("plain text");
            str = e.clipboardData.getData("text/plain");
            output.textContent = str;
        }
    }
});
<div>Click here to focus the window, then do a paste</div>
<div id="output"></div>

关于javascript - WordPress 编辑器在复制和粘贴时如何保留文本格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58681432/

相关文章:

javascript - Vue Watch没有触发

javascript - 如何使用文件系统 API 重命名 Chrome 应用程序中的文件?

php - 将 Wordpress 迁移到具有子目录的站点

css - 在 tinymce 编辑器中更改所选文本的样式(不是蓝色背景突出显示)

javascript - 当上面的 Div 已填充时移动 Div

javascript - Snap.svg 在响应式 View 框中拖动坐标

mysql - 迁移后 Wordpress 无法写入数据库

php - woocommerce - 如何获取当前产品类别的最顶级类别

javascript - tinyMCE:如何添加快捷方式 Ctrl+Enter

tinymce - TinyMCE 中的 force_root_block 选项