我注意到当我们从其他地方复制并粘贴一些东西到 WordPress 编辑器时,它会保留其原始形式。粘贴的数据不仅仅是一些文本,还有 HTML 和 CSS。 WordPress 是如何做到的?我可以提供代码示例或引用吗?
最佳答案
我假设(我没看过)他们回应了 paste
event并使用 getData
method的 clipboardData
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/