我注意到,当我们从其他地方复制并粘贴一些东西到WordPress编辑器时,它会保留其原始形式。粘贴的数据不仅仅是一些文本,还有HTML和CSS。WordPress是如何做到的?我可以举一个代码的例子或参考它吗?
我假设(我还没有看(它们响应paste
事件,并使用ClipboardEvent
对象的clipboardData
属性的getData
方法,向它询问格式化文本(可能会将"text/html"
作为格式化参数(。然后,他们获取生成的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>