我想防止用户将不允许的标记粘贴到contenteditable
div中。
我想将粘贴内容限制为粗体,斜体,删除线,下划线和链接。
最好的方法是什么(我正在使用jQuery
)?
这不是JQuery Text Editor Paste Without Formatting的副本。我不想在不格式化的情况下粘贴。我想选择/限制一些标记。
我已经阅读了以下问题,没有一个提供明确的答案:
答案 0 :(得分:2)
通过监听可编辑元素的paste
事件来限制粘贴的内容。在此事件内部,您可以使用正则表达式过滤用户尝试粘贴的数据。
const el = document.querySelector('p');
el.addEventListener('paste', (e) => {
// Get user's pasted data
let data = e.clipboardData.getData('text/html') ||
e.clipboardData.getData('text/plain');
// Filter out everything except simple text and allowable HTML elements
let regex = /<(?!(\/\s*)?(a|b|i|em|s|strong|u)[>,\s])([^>])*>/g;
data = data.replace(regex, '');
// Insert the filtered content
document.execCommand('insertHTML', false, data);
// Prevent the standard paste behavior
e.preventDefault();
});
<p contenteditable>Try pasting content into this paragraph. The pasted content can include a <b>BOLD</b>, <i>ITALIC</i>, <s>STRIKE</s>, or <u>UNDERLINE</u>. It can also include a <a href='#'>LINK</a>.</p>