5 回答
TA贡献1836条经验 获得超4个赞
如果传递给 v-html 的内容是经过净化的 HTML,则可以禁用该规则。
通过将 html 包裹起来来禁用该规则
<!-- eslint-disable vue/no-v-html -->
<button
id="foreignerBtn"
class="tabButton"
@click="foreignerClick"
v-html="textContent2"
></button>
<!--eslint-enable-->
TA贡献1806条经验 获得超8个赞
正如另一个答案中所述,您可以禁用警告,但一个好的做法是确保正确禁用该规则。
为此,您可以使用dompurify来解析您提供给浏览器的 HTML,删除任何恶意部分并安全地显示它。
问题仍然存在,但你可以使用RisXSS ,它是一个 ESLint 插件,v-html
如果你之前没有清理它,它会警告用户(从某种意义上说,这是vue/no-v-html
ESLint 规则的改进版本)。
为此,请安装dompurify
并eslint-plugin-risxss
:
npm install dompurify eslint-plugin-risxss
添加risxss
到您的 ESLint 插件,然后使用 DOMPurify:
<template>
<button
id="foreignerBtn"
class="tabButton"
@click="foreignerClick"
v-html="sanitizedTextContent2"
<!-- no warning, good to go -->
></button>
<button
id="foreignerBtn"
class="tabButton"
@click="foreignerClick"
v-html="textContent2"
<!-- warning here -->
></button>
</template>
<script>
import DOMPurify from 'dompurify';
export default {
data () {
return {
sanitizedTextContent2: DOMPurify.sanitize(textContent2)
}
}
}
</script>
TA贡献1826条经验 获得超6个赞
在你的main.js
(或者你定义 vue 实例的任何地方),添加:
import DOMPurify from "dompurify";
// ...
Vue.directive("sane-html", (el, binding) => {
el.innerHTML = DOMPurify.sanitize(binding.value);
});
现在,无论您在何处使用该指令v-html
,请v-sane-html
改为使用。
TA贡献1830条经验 获得超3个赞
我想禁用整个项目,所以我在“eslintConfig”的“rules”中添加了这一行
"eslintConfig": {
...
"rules": {
...
"vue/no-v-text-v-html-on-component": "warn"
}
TA贡献1807条经验 获得超9个赞
您可以将代码包装在
<!-- eslint-disable -->
<button
id="foreignerBtn"
class="tabButton"
@click="foreignerClick"
v-html="textContent2"
></button>
<!-- eslint-enable -->
它将隐藏所有 eslint 警告,包括 v-html
- 5 回答
- 0 关注
- 258 浏览
添加回答
举报