使用 Javascript 检测真实文本,而不是 HTML 标签
Using Javascript to detect real text, not HTML tags
我遇到一个问题,我使用所见即所得编辑器 (TinyMCE) 将内容保存到数据库中,有时保存的值不是真正的内容,而只是像这样的标签:
<p><br data-mce-bogus="1"></p>
这不是真正的内容。
所以我的应用程序无法判断什么时候有真实内容,什么时候有一些不可见的 HTML 标签。
如何使用 JS 可靠地检测何时存在真实内容或不可见标签?请注意,对“<br>
”的简单检查将不起作用,因为可能存在其他属性,例如 data-mce-bogus="1"
,以及我以前从未见过的其他属性。
理想情况下,我的编辑器会在内容更新时检测到这一点,如果未检测到 "real" 内容,则在数据库中保存一个空字符串。我的应用程序在 Angular JS 中,所以我需要它在 JS 中,而不是服务器端。
只需删除标签而不触及它们的内容,然后检查是否还有剩余。
var text = '<p><br data-mce-bogus="1"></p>';
var clearRegexp = /<[^>]+>/g;
text = text.replace(clearRegexp, "");
var hasContent = text.trim() != "";
我遇到一个问题,我使用所见即所得编辑器 (TinyMCE) 将内容保存到数据库中,有时保存的值不是真正的内容,而只是像这样的标签:
<p><br data-mce-bogus="1"></p>
这不是真正的内容。
所以我的应用程序无法判断什么时候有真实内容,什么时候有一些不可见的 HTML 标签。
如何使用 JS 可靠地检测何时存在真实内容或不可见标签?请注意,对“<br>
”的简单检查将不起作用,因为可能存在其他属性,例如 data-mce-bogus="1"
,以及我以前从未见过的其他属性。
理想情况下,我的编辑器会在内容更新时检测到这一点,如果未检测到 "real" 内容,则在数据库中保存一个空字符串。我的应用程序在 Angular JS 中,所以我需要它在 JS 中,而不是服务器端。
只需删除标签而不触及它们的内容,然后检查是否还有剩余。
var text = '<p><br data-mce-bogus="1"></p>';
var clearRegexp = /<[^>]+>/g;
text = text.replace(clearRegexp, "");
var hasContent = text.trim() != "";