5 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果傳遞給 v-html 的內(nèi)容是經(jīng)過凈化的 HTML,則可以禁用該規(guī)則。
通過將 html 包裹起來來禁用該規(guī)則
<!-- eslint-disable vue/no-v-html -->
<button
? ? ? ? id="foreignerBtn"
? ? ? ? class="tabButton"
? ? ? ? @click="foreignerClick"
? ? ? ? v-html="textContent2"
? ? ? ></button>
<!--eslint-enable-->

TA貢獻(xiàn)1806條經(jīng)驗(yàn) 獲得超8個(gè)贊
正如另一個(gè)答案中所述,您可以禁用警告,但一個(gè)好的做法是確保正確禁用該規(guī)則。
為此,您可以使用dompurify來解析您提供給瀏覽器的 HTML,刪除任何惡意部分并安全地顯示它。
問題仍然存在,但你可以使用RisXSS ,它是一個(gè) ESLint 插件,v-html
?如果你之前沒有清理它,它會(huì)警告用戶(從某種意義上說,這是vue/no-v-html
ESLint 規(guī)則的改進(jìn)版本)。
為此,請安裝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貢獻(xiàn)1826條經(jīng)驗(yàn) 獲得超6個(gè)贊
在你的main.js
(或者你定義 vue 實(shí)例的任何地方),添加:
import DOMPurify from "dompurify";
// ...
Vue.directive("sane-html", (el, binding) => {
? el.innerHTML = DOMPurify.sanitize(binding.value);
});
現(xiàn)在,無論您在何處使用該指令v-html
,請v-sane-html
改為使用。

TA貢獻(xiàn)1830條經(jīng)驗(yàn) 獲得超3個(gè)贊
我想禁用整個(gè)項(xiàng)目,所以我在“eslintConfig”的“rules”中添加了這一行
"eslintConfig": {
...
"rules": {
...
"vue/no-v-text-v-html-on-component": "warn"
}

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
您可以將代碼包裝在
<!-- eslint-disable -->
<button
id="foreignerBtn"
class="tabButton"
@click="foreignerClick"
v-html="textContent2"
></button>
<!-- eslint-enable -->
它將隱藏所有 eslint 警告,包括 v-html
- 5 回答
- 0 關(guān)注
- 396 瀏覽
添加回答
舉報(bào)