uni-app editor组件支持baseURI功能
uni-app editor组件支持baseURI功能
问题描述
官方的富文本editor组件,如果插入图片的代码为
<img src="/img/abc.jpg">
则图片是显示不出来的,必须要加域名,可是数据是存入到db中的,一般不会写死域名路径
希望能加入绑定的域名,这样默认能出图片
1 回复
在uni-app中,editor
组件用于提供一个富文本编辑器,让用户可以输入和编辑富文本内容。关于baseURI
功能,这通常与HTML中的<base>
标签相关,用于指定页面上所有相对URL的基准URL。然而,在uni-app的editor
组件中,并没有直接提供baseURI
属性。不过,我们可以通过一些间接的方式来实现类似的功能。
虽然uni-app的editor
组件本身不直接支持baseURI
,但我们可以利用JavaScript在内容插入前进行处理,确保所有相对URL都转换为绝对URL。下面是一个基本的实现思路,通过监听editor
组件的input
事件来捕获并处理输入内容:
<template>
<view>
<editor
id="myEditor"
v-model="content"
@input="handleInput"
></editor>
</view>
</template>
<script>
export default {
data() {
return {
content: '',
baseURI: 'https://example.com/' // 你的基准URL
};
},
methods: {
handleInput(e) {
// 获取当前editor的内容
let htmlContent = e.detail.html;
// 使用正则表达式匹配所有的<a>标签和<img>标签的src/href属性中的相对URL
let regex = /(<a\s[^>]*href=["']?)([^"'>]+["']?)([^>]*>)|(<img\s[^>]*src=["']?)([^"'>]+["']?)([^>]*>)/gi;
htmlContent = htmlContent.replace(regex, (match, p1, p2, p3, p4, p5, p6) => {
let url = p2 || p5;
if (!/^https?:\/\//i.test(url)) {
// 如果是相对URL,则转换为绝对URL
url = this.baseURI + url;
}
if (p2) {
return p1 + url + p3;
} else {
return p4 + url + p6;
}
});
// 更新v-model绑定的内容
this.content = htmlContent;
}
}
};
</script>
在这个例子中,我们监听了editor
组件的input
事件,当内容发生变化时,通过正则表达式匹配所有的<a>
标签和<img>
标签的href
和src
属性。如果匹配到的URL是相对路径,我们就将其转换为以baseURI
为基准的绝对路径。
请注意,这个实现方式是基于字符串处理的,可能不是最优雅或最高效的解决方案,但它提供了一个基本的思路来处理相对URL。在实际应用中,你可能需要根据具体需求对正则表达式和替换逻辑进行调整。