使用Vue,我想显示一个确认模式,内容为“您确定要删除'{{itemName}}'吗?”。
通过将Javascript字符串绑定到模板中嵌入的变量,这很容易。
但是,如果我想itemName用斜体字强调它,我唯一能找到的方法就是使用v-html,这当然会使它适用于XSS。
有什么方法可以对字符串的一部分进行样式设置?
您可以尝试使用sanitize-html 之类的包。这是我将如何做到的:
安装:
npm install sanitize-html
Run Code Online (Sandbox Code Playgroud)
主要.js:
import sanitizeHTML from 'sanitize-html';
Vue.prototype.$sanitize = sanitizeHTML;
Run Code Online (Sandbox Code Playgroud)
你的组件.vue:
<div v-html="$sanitize(itemName)" />
Run Code Online (Sandbox Code Playgroud)
查看自述文件以获取有关允许的标签和属性的默认选项的更多信息。
编辑分别。备择方案:
sanitize-html有一个 327 KB 重量的缺点。但是有更小的包可用:
编辑2:
我们现在在我们的项目中使用了一个包vue-dompuritfy-html。安装后你可以简单地使用
npm install sanitize-html
Run Code Online (Sandbox Code Playgroud)
奖励:通过使用这个包,你涵盖了推荐的 eslint 规则vue/no-v-html
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |