项目安装:npm install xss
一、简单使用:
1、vue项目中在main.js中设置,nuxt在vue.js中设置
import xss from 'xss' // 导入xss包
Vue.prototype.$xss = xss // 给vue原型加上
2、在会返回HTML标签的数据中用$xss()包裹就行
(1)在标签中使用
<div v-html="$xss(data.html)"></div> // data.html即为返回的标签数据
(2)在返回数据中进行处理
<div v-html="html"></div>
this.html = $xss(data.html) // data.html为<a href="#">点击</a> 类型的数据
二、自定义规则使用
1、vue项目中在main.js中设置,nuxt在vue.js中设置
import xss from 'xss' // 导入xss包
// 设置白名单 通过指定一个whiteList,例如{ 'tagName': [ 'attr-1', 'attr-2' ] }。不在白名单中的标签和属性将被过滤掉。例如:
// 仅允许标记a及其属性style,href,title,target
// 使用下面指定的配置,以下HTML:
// <a href="#" onclick="hello()"> <i>你好</ i> </a>
// 将变为:
// <a href="#">你好</a>
const options = {
whiteList: { ...xss.whiteList,
a: ['style', 'href', 'title', 'target']
}
}
const myxss = new xss.FilterXSS(options)
Vue.prototype.$xss = (val) => {
// 然后应用myxss.process()
return myxss.process(val)
}
2、在会返回HTML标签的数据中用$xss()包裹就行
(1)在标签中使用
<div v-html="$xss(data.html)"></div> // data.html即为返回的标签数据
(2)在返回数据中进行处理
<div v-html="html"></div>
this.html = $xss(data.html) // data.html为<a href="#">点击</a> 类型的数据