选项
paste_as_text
此选项用于设置Edit菜单下“粘贴为文本”菜单项的默认状态。默认情况下,该选项处于禁用状态。
类型: Boolean
默认值: false
可能值: true,false
示例:使用paste_as_text
tinymce.init({
selector: 'textarea', // change this value according to your HTML
plugins: 'powerpaste',
toolbar: 'paste',
paste_as_text: true
});paste_merge_formats
此选项在粘贴内容时启用格式合并功能。它会合并相同的文本格式元素,以减少生成的HTML元素数量。例如:<b>abc <b>bold</b> 123</b>会变成<b>abc bold 123</b>,因为内部的格式是冗余的。此选项默认启用,但如果保留嵌套或相同的格式元素很重要,则可以禁用。
类型: Boolean
默认值: true
可能值: true,false
示例:使用paste_merge_formats
tinymce.init({
selector: 'textarea', // change this value according to your HTML
plugins: 'powerpaste',
toolbar: 'paste',
paste_merge_formats: false
});paste_tab_spaces
此选项控制粘贴纯文本内容时,用多少个空格来表示HTML中的制表符。默认情况下,制表符会被转换为4个连续的空格字符。
类型: Number
默认值: 4
示例:使用paste_tab_spaces
tinymce.init({
selector: 'textarea', // change this value according to your HTML
plugins: 'powerpaste',
toolbar: 'paste',
paste_tab_spaces: 2
});powerpaste_word_import
此选项控制从Microsoft Word粘贴的内容如何过滤。
类型: String或Function
默认值: 'prompt'
可能值: 'clean',merge,prompt或一个Function
支持的基于字符串的值的作用如下:
| 值 | 行为 |
|---|---|
| 保留内容的结构,如标题、表格和列表。 删除内联样式和类。 结果是简单的内容,使用网站的CSS样式表,同时保留原始文档的语义结构。 |
| 保留原始文档的内联格式和结构。 删除无效和专有的样式、标签和属性。 确保HTML有效,同时更接近原始文档的格式。 |
| 在尝试粘贴HTML内容后,提示用户在 |
此外,此选项可以采用一个异步函数,该函数返回一个Promise,该函数将以字符串clean或merge解析。这允许在用户每次粘贴相关内容时动态设置粘贴模式。例如,可以用它来复制prompt对话框,并使用自定义对话框。
当使用Windows操作系统时,从Microsoft Word 2013(或更高版本)的“受保护视图”中复制和粘贴内容会导致纯文本、无格式文本。这是由于受保护视图与剪贴板的交互方式导致的。
示例:使用异步函数的powerpaste_word_import
tinymce.init({
selector: 'textarea', // change this value according to your HTML
plugins: 'powerpaste',
powerpaste_word_import: () => new Promise((resolve) => {
// 使用原生确认对话框提示用户在clean和merge之间进行选择
if (confirm('是否保留格式?')) {
resolve('merge');
} else {
resolve('clean');
}
})
});powerpaste_googledocs_import
此选项控制从Google Docs粘贴的内容如何过滤。
类型: String或Function
默认值: 'prompt'
可能值: 'clean',merge,prompt或一个Function
支持的基于字符串的值的作用如下:
| 值 | 行为 |
|---|---|
| 保留内容的结构,如标题、表格和列表。 删除内联样式和类。 结果是简单的内容,使用网站的CSS样式表,同时保留原始文档的语义结构。 |
| 保留原始文档的内联格式和结构。 删除无效和专有的样式、标签和属性。 确保HTML有效,同时更接近原始文档的格式。 |
| 提示用户在尝试粘贴 HTML 内容后选择 |
此外,此选项可以采用一个返回 Promise 的异步函数,该 Promise 将以字符串 clean 或 merge 进行解析。这使得每次用户粘贴相关内容时都能动态设置粘贴模式。例如,可以用它来复制 prompt 对话框并使用自定义对话框。
示例:使用异步函数的 powerpaste_googledocs_import
tinymce.init({
selector: 'textarea', // 根据需要更改此值以适配您的 HTML
plugins: 'powerpaste',
powerpaste_googledocs_imports: () => new Promise((resolve) => {
// 使用原生确认对话框提示用户选择 clean 或 merge
if (confirm('是否保留格式?')) {
resolve('merge');
} else {
resolve('clean');
}
})
});powerpaste_html_import
此选项控制如何过滤从非 Microsoft Word 和 Google Docs 来源粘贴的内容。
类型:String
默认值:'clean'
可能的值:'clean'、merge、prompt
支持的基于字符串的值的作用:
| 值 | 行为 |
|---|---|
| 保留内容的结构,如标题、表格和列表。 移除内联样式和类。 这样会得到简单的内容,使用网站的 CSS 样式表,同时保留原始文档的语义结构。 |
| 保留原始文档的内联格式和结构。 移除无效和专有的样式、标签和属性。 这确保 HTML 有效,同时更接近原始文档的格式。 |
| 提示用户在尝试粘贴 HTML 内容后选择 |
从一个 TinyMCE 实例粘贴到另一个 TinyMCE 实例从 TinyMCE 实例中复制或剪切内容,然后粘贴到另一个 TinyMCE 实例(例如,从一个 TinyMCE 文档的一部分复制或剪切并粘贴到同一文档的另一个位置)不会由
powerpaste_html_import处理。在这种情况下,复制或剪切的内容会原样粘贴。
示例:使用 powerpaste_html_import 要求在粘贴 HTML 时进行提示
tinymce.init({
selector: 'textarea', // 根据需要更改此值以适配您的 HTML
plugins: 'powerpaste',
powerpaste_html_import: 'prompt',
});powerpaste_autolink_urls
此选项启用或禁用对粘贴内容中类似 URL 的文本进行自动链接。
类型:Boolean
默认值:true
可能的值:true、false
将powerpaste_autolink_urls选项设置为false会覆盖smart_paste选项的自动链接行为。
示例:禁用 URL 的自动链接
tinymce.init({
selector: 'textarea', // 根据需要更改此值以适配您的 HTML
plugins: 'powerpaste',
powerpaste_autolink_urls: false,
});powerpaste_allow_local_images
当设置为 true 时,复制内容中使用 data URI 的 Base64 编码图像在粘贴后不会被移除。
类型:Boolean
默认值:true
可能的值:true、false
如果配置 PowerPaste 允许本地图像,可以让 TinyMCE 自动上传 Base64 编码的图像以转换回标准图像,具体如 图像上传文档 中所述。
powerpaste_emf_processor
此选项控制如何处理 emf 图像。如果提供此选项,emf 图像 blob 将使用提供的函数转换为 png 图像 blob,然后粘贴到编辑器中。如果不提供此选项,编辑器将移除质量不佳的图像,并显示错误消息。
类型:Function
示例:powerpaste_emf_processor
tinymce.init({
selector: 'textarea', // 根据需要更改此值以适配您的 HTML
plugins: 'powerpaste',
powerpaste_word_import: 'clean',
powerpaste_emf_processor: (blob) => {
return fetch('YOUR_IMAGE_URL').then(res => res.blob())
}
});如果仅选中图像,粘贴会成功,并且图像会被正确插入。然而,如果图像与其他类型的内容(如文本)一起选中,图像将不会被粘贴,并且会显示错误消息。
powerpaste_block_drop
由于浏览器限制,无法过滤拖放至编辑器中的内容。当 powerpaste_block_drop 设置为 true 时,拖放至编辑器的功能将被禁用。这样可以防止未过滤内容的引入。复制和粘贴功能仍然可用。
类型: Boolean
默认值: false
可能的值: true, false
示例:使用 powerpaste_block_drop
tinymce.init({
selector: 'textarea', // 根据HTML更改此值
plugins: 'powerpaste',
powerpaste_block_drop: false
});powerpaste_clean_filtered_inline_elements
此选项允许配置 PowerPaste 的 “clean” 内联元素粘贴过滤器。当 powerpaste_word_import 或 powerpaste_html_import 设置为 “clean” 时;或者当用户在粘贴提示对话框中点击 “Remove formatting” 按钮时,将运行这些过滤器。
可以通过将 powerpaste_clean_filtered_inline_elements 设置为逗号分隔的内联元素标签名称字符串,指定在粘贴时应移除的内联元素列表。
类型: 逗号分隔的字符串或 Array
默认值: []
示例:powerpaste_clean_filtered_inline_elements
tinymce.init({
selector: 'textarea', // 根据HTML更改此值
plugins: 'powerpaste',
powerpaste_word_import: 'clean', // 可选
powerpaste_html_import: 'clean', // 可选
powerpaste_clean_filtered_inline_elements: 'strong, em, b, i, u, strike, sup, sub, font'
});powerpaste_keep_unsupported_src
由于浏览器限制,PowerPaste 无法支持 Microsoft Word 和 Microsoft Excel 支持的所有图像类型。当 powerpaste_keep_unsupported_src 设置为 true 时,PowerPaste 将把不支持的图像的原始 src 存储在粘贴图像元素的 data-image-src 属性中。这使开发人员能够通过后处理添加进一步的图像支持。
例如,浏览器不允许 PowerPaste 访问文件系统。如果您的应用程序有权访问文件系统,则将 powerpaste_keep_unsupported_src 设置为 true 可能允许您在后处理过程中使用原始文件路径替换不支持的图像。
类型: Boolean
默认值: false
可能的值: true, false
示例:使用 powerpaste_keep_unsupported_src
tinymce.init({
selector: 'textarea', // 根据HTML更改此值
plugins: 'powerpaste',
powerpaste_keep_unsupported_src: true
});smart_paste
smart_paste 函数将:
检测类似 URL 的文本并将其更改为超链接。
检测类似图像 URL 的文本,并尝试将文本替换为图像。
要禁用 smart_paste 功能,请将 smart_paste 设置为 false。要配置识别哪些图像文件类型,请参见 Image & file options - images_file_types。
类型: Boolean
默认值: true
可能的值: true, false
将powerpaste_autolink_urls选项设置为false会覆盖smart_paste选项的自动链接功能。
示例:使用 smart_paste
tinymce.init({
selector: 'textarea', // 根据HTML更改此值
plugins: 'powerpaste',
toolbar: 'paste',
smart_paste: false
});images_file_types
此选项配置编辑器接受的图像文件格式。更改此选项将调整以下编辑器行为:
在 Image 对话框中允许上传哪些图像文件格式。
核心粘贴和 PowerPaste
smart_paste功能识别并放置在img元素中的图像文件格式。
类型: String
默认值: 'jpeg,jpg,jpe,jfi,jif,jfif,png,gif,bmp,webp'
可能的值: 有效的网络图像文件扩展名列表。有关可能值的列表,请参阅:MDN Web Docs - Image file type and format guide。
示例:使用 images_file_types
tinymce.init({
selector: 'textarea', // 根据HTML更改此值
plugins: 'image',
toolbar: 'image',
images_file_types: 'jpg,svg,webp'
});高级选项
预过滤和后过滤回调
开发人员可以使用预过滤和后过滤回调在 PowerPaste 的过滤器运行之前和之后添加自定义过滤。这些可以作为初始化选项添加,也可以在运行时使用事件侦听器添加。
这些回调函数也会由核心粘贴功能触发,但当由PowerPaste触发时,它们会传递更多的数据。
paste_preprocess
此选项允许您在内容通过PowerPaste的过滤器之前,对来自剪贴板的内容运行自定义过滤。该回调函数接收两个参数:PowerPaste插件实例和一个包含事件数据的对象。该对象包含:
标准粘贴事件数据。
content- 一个包含要粘贴内容的字符串。mode- 一个表示PowerPaste处于clean、merge还是auto模式的字符串。source- 一个表示PowerPaste将根据内容的源运行哪种过滤的字符串。这将返回html、msoffice、googledocs、image、imagedrop、plaintext、text或invalid。
当内容源没有格式需要“clean”或“merge”时,会使用“auto”模式。例如,粘贴没有文本或标记内容的图像时。
类型: Function
TinyMCE配置示例:
const yourCustomFilter = (content) => {
// 实现您的自定义过滤并返回过滤后的内容
return content;
};
tinymce.init({
selector: 'textarea',
plugins: 'powerpaste',
paste_preprocess: (pluginApi, data) => {
console.log(data.content, data.mode, data.source);
// 通过修改data.content应用自定义过滤
// 例如:
const content = data.content;
const newContent = yourCustomFilter(content);
data.content = newContent;
}
});paste_postprocess
此选项允许您在内容通过PowerPaste的过滤器之后,对粘贴的内容运行自定义过滤。该回调函数接收两个参数:PowerPaste插件实例和一个包含事件数据的对象。该对象包含:
标准粘贴事件数据。
node- 一个包含过滤后的粘贴内容DOM结构的DOM节点。mode- 一个表示PowerPaste处于clean、merge还是auto模式的字符串。source- 一个表示PowerPaste将根据内容的源运行哪种过滤的字符串。这将返回html、msoffice、googledocs、image、imagedrop、plaintext、text或invalid。
当内容源没有格式需要“clean”或“merge”时,会使用“auto”模式。例如,粘贴没有文本或标记内容的图像时。
类型: Function
TinyMCE配置示例:
tinymce.init({
selector: 'textarea',
plugins: 'powerpaste',
paste_postprocess: (pluginApi, data) => {
console.log(data.node, data.mode, data.source);
// 通过修改data.node应用自定义过滤
const additionalNode = document.createElement('div');
additionalNode.innerHTML = '<p>这将放在粘贴内容之前。</p>';
data.node.insertBefore(additionalNode, data.node.firstElementChild);
}
});