如何将已经 "embedded" 的 <a> 标签的 "target" 属性设置为 HTML?
How can I set the "target" attribute of <a> tags which are already "embedded" into HTML?
我正在使用 VueJS 和 Kentico Kontent 作为 CMS 开发一个网站。此 CMS 提供 "rich text" 功能,基本上允许文本内容嵌入链接和基本格式,当通过 API 提供时会自动转换为 HTML。
我使用 v-html
指令显示 HTML 内容没有问题,但我想不出一种方法来将内部 <a>
标签的属性设置为 _blank
,以便嵌入链接在单击时打开新的 windows。
有什么优雅的方法可以做到这一点而不必从前端解析 HTML 吗?
您可以创建一个指令:
Vue.directive('links-in-new-window', {
inserted: function(el) {
const anchors = el.querySelectorAll('a')
anchors.forEach((anchor) => anchor.target = "_blank")
}
})
并将其应用于您正在使用 v-html
的相同元素:
<div class="content" v-html="content" v-links-in-new-window></div>
在 vue V3 中,指令如下所示:
app.directive('links-in-new-window', {
mounted: function(el) {
const anchors = el.querySelectorAll('a')
anchors.forEach((anchor) => anchor.target = "_blank")
}
})
HTML也是一样的,记得用v-
=> v-links-in-new-window
<div class="content" v-html="content" v-links-in-new-window></div>
我正在使用 VueJS 和 Kentico Kontent 作为 CMS 开发一个网站。此 CMS 提供 "rich text" 功能,基本上允许文本内容嵌入链接和基本格式,当通过 API 提供时会自动转换为 HTML。
我使用 v-html
指令显示 HTML 内容没有问题,但我想不出一种方法来将内部 <a>
标签的属性设置为 _blank
,以便嵌入链接在单击时打开新的 windows。
有什么优雅的方法可以做到这一点而不必从前端解析 HTML 吗?
您可以创建一个指令:
Vue.directive('links-in-new-window', {
inserted: function(el) {
const anchors = el.querySelectorAll('a')
anchors.forEach((anchor) => anchor.target = "_blank")
}
})
并将其应用于您正在使用 v-html
的相同元素:
<div class="content" v-html="content" v-links-in-new-window></div>
在 vue V3 中,指令如下所示:
app.directive('links-in-new-window', {
mounted: function(el) {
const anchors = el.querySelectorAll('a')
anchors.forEach((anchor) => anchor.target = "_blank")
}
})
HTML也是一样的,记得用v-
=> v-links-in-new-window
<div class="content" v-html="content" v-links-in-new-window></div>