如何在Dynamics 365中提取富文本字段的纯文本值
从Dynamics 365富文本字段提取纯文本的解决方案
直接通过formContext.getAttribute("description")获取的是字段属性对象,并非实际内容;调用getValue()后得到的是带HTML格式的字符串,需要做转换处理才能提取纯文本。以下是两种可靠的实现方式:
方法一:使用DOMParser解析HTML
利用浏览器内置的DOMParser工具直接解析HTML内容,提取纯文本,适合现代Dynamics 365表单环境:
function extractPlainText(formContext) { var htmlContent = formContext.getAttribute("description").getValue(); if (!htmlContent) return ""; // 处理字段为空的情况 const parser = new DOMParser(); const doc = parser.parseFromString(htmlContent, "text/html"); return doc.body.textContent || doc.body.innerText; }
方法二:通过临时DOM元素转换
如果需要兼容旧版环境,或者需要额外清理风险元素(如脚本标签),可以创建临时DOM元素来处理:
function getPlainText(htmlStr) { if (!htmlStr) return ""; const tempDiv = document.createElement("div"); tempDiv.innerHTML = htmlStr; // 可选:移除HTML中的脚本标签,避免潜在风险 const scripts = tempDiv.getElementsByTagName("script"); for (let i = scripts.length - 1; i >= 0; i--) { scripts[i].remove(); } return tempDiv.textContent || tempDiv.innerText; } // 调用示例 const richTextHtml = formContext.getAttribute("description").getValue(); const plainText = getPlainText(richTextHtml);
注意事项
- 必须先判断
getValue()的返回值是否为空,否则会触发空指针异常 - 两种方法都会保留文本的基本换行、分段结构,符合用户输入的原始排版逻辑
- 若字段未启用富文本格式,直接调用
getValue()即可获取纯文本,无需转换
内容的提问来源于stack exchange,提问作者D365Dev
相关产品推荐
相关产品推荐

